Jfinal怎么获取restful风格数据

比如url请求是:localhost/tool/post/service/business/3a093e20-58cb-46a2-bcc9-b31e6b74566c

post是我写好的controller

后面的/service/business/3a093e20-58cb-46a2-bcc9-b31e6b74566c 这三个都是携带的参数

请问怎么能获取到这三个参数呢?我一请求这一长串就是报错了,因为没有这个controller,我的controller只

到post  。但是后面的三个参数我需要获取.

1.配置

c1.png

2.controller

c2.png

评论区

JFinal

2018-08-31 14:47

有现成的方法:
getPara(0);
getPara(1);
getPara(2);

注意看一下文档: http://jfinal.com/doc

JFinal

2018-08-31 14:52

我看到你的 /service/business 这两部分也需要是参数,这个 jfinal 的路由没有直接支持,改成减号分隔就可以了:
/service-business-3a093e20-58cb-46a2-bcc9-b31e6b74566c

改成上面的格式以后,getPara() 不带参时就是获取整个参数本身,获取以后可以适当做一下切割:
getPara().split("-");

getPara(int) 带 int 参数时会按位置获取参数,例如 getPara(1) 就会获取到 "business" 这个参数,这个在文档中都有代码实例

jfinal 在 url 中传参时,不支持 "/" 作为分隔符,而是使用减号 "-" 作为分隔符,这个在传参这件事情的本质上没有什么区别,但好处却很多

例如减少路径的深度,提升了搜索引擎对期的权重
例如极大提升路由匹配的效率等等

不旺旺的仙贝

2018-08-31 14:59

@JFinal 我在浏览器地址栏直接这样请求URL: localhost/tool/post/service/business/3a093e20-58cb-46a2-bcc9-b31e6b74566c 就404报错了。因为我的controller没有这么长,我的controller只到post,我现在就是想直接在URL地址栏把参数也传到post这个controller里面

JFinal

2018-08-31 15:09

@不旺旺的仙贝 什么意思?

controller 没有这么长?
controller 只到 post ?
URL 地址栏把参数传到 post 这个 controller 里?

都听不懂

不旺旺的仙贝

2018-08-31 15:13

@JFinal 波总打扰了,菜鸡就是这样。。你上一个回复的我好像有点思路了。。

JFinal

2018-08-31 15:14

@不旺旺的仙贝 如果路由不能改,就得使用 handler 来转换,参考 com.jfinal.ext.handler 包下面的一些 handler 实现

ThreeX

2020-11-06 09:55

@JFinal 这里又存在一个问题了,第三个参数是:3a093e20-58cb-46a2-bcc9-b31e6b74566c,本身就有 - 这个符号。会被切割成几个参数,该如何是好呢?

JFinal

2020-11-06 10:53

@ThreeX getPara() 不带参就可以获取了

热门反馈

扫码入社