天天看点

l5如何通过路由走api版本回退查找设置l5如何通过路由走api版本回退查找设置具体需求解决方法downgrade中间件的编写总结

当前遇到的问题是使用laravel写接口,但是接口是有版本号的,我们把版本号放在url中,比如:

但是实际上api1.1的user/info和api的user/info的action是一样的,但是api1.2的user/info是不一样的

本来路由应该这么写:

这个感觉还是丑了点,我不希望路由会这么复杂,我希望的是进行版本衰退寻找,api1.1中的user/info那个不需要写,它能自动去寻找api1.1中有没有这个路由,没有的话,去寻找比它版本低的路由。

这里当然要使用到middleware,希望路由是:

但是非常可惜,这样写的话

是进不了middleware的。

我们需要的是有个“匹配所有”的路由能将路由定位定到prefix 1.1的这个里面

所以改成这样:

这里就能将所有的/{version}/{controller}/{action}这样的请求经过downgrade中间件了。

但是中间件怎么写呢?

这里最重要的点就是将$routeAction的uses字段修改之后,调用

就可以修改路由对应的action了

其他的就是业务逻辑的问题了。

laravel4把匹配全路由的函数去掉了,但是其实使用中间件+any("{a}/{b}/{c}") 的方法也可以近似实现一个这样的功能的。

so,总是有路通向罗马的。

本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/4413749.html,如需转载请自行联系原作者