天天看點

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,如需轉載請自行聯系原作者