自定义路由如何配置。

有个问题需要大家解答一下,jfina中,如何配置这种路由,http://localhost:8080/friendship/rKJGdAKPm/profile。rKJGdAKPm是一个用户ID,随机的。

评论区

JFinal

2017-09-27 11:12

jfinal 路由规则的参数总是在最后一部分的,所以支持这样:
http://localhost:8080/friendship/profile/rKJGdAKPm

jfinal 路由有性能上的考虑,也有设计上的考虑,简单说一说:
1:性能上
jfinal 路由匹配不需要循环,也不需要正则匹配,多数情况下只有一次从 map 中取值的操作,性能达到极致,路由匹配代码只有 10 行

几乎所有的 web 框架在匹配路由时,都需要使用正则和循环,jfinal 路由匹配性能起码高一个数级

2:设计上
jfinal 路由的设计类比了方法调用:
methodName(p1, p2, ..., pn)

对应到路由的 url 为:
/controllerKey/methodName/p1-p2-p3...pn

这里的一个显著特征是参数永远在最后方,而不是掺杂在 methodName 或者 controllerKey 里面。基于上面的类比设计方法,如果破坏上面规则的话,方法调用相当于这样:
method p1, p2, ...pn Name()

显然不符合直觉

JFinal

2017-09-27 11:34

补充一下,如果逼不得已经使用 /friendship/rKJGdAKPm/profile 这样的路由,也只需要添加一个 Handler 做下转换就好,有几个用户在对接第三方的时候碰到这种需求就是通过 Handler 转换搞定的,非常容易

参考一下 jfinal 里的 com.jfinal.ext.handler 包下面的源代码,自己写一个

热门反馈

扫码入社