PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/2309272
最近app服务端研发需要做版本兼容功能,特记录一下解决实现过程,以便后期参考。
一、兼容原则
区分app请求版本,保证不同版本的app访问api时均可用;同时版本路由控制与业务逻辑解耦,实现Router与action层的分离,保障应用扩展性和可维护性。
二、现有路由分析
目前项目框架原因,uri的结构如下:/appName/module/action,举例:/demo/api/getuserlist,目前api文件相当于路由map,控制不同接口对应具体action。版本兼容确定在module层做文章,那不改动层级结构的话,修改uri如下:/demo/apiv1/getuserlist || /demo/apiv2/getuserlist || /demo/apiv3/getuserlist,即api-》apiv1/2/3。
三、Nginx重写路由
美化uri实现,达到如下目的:
/demo/apiv1/getuserlist --》 /demo/api/v1/getuserlist
/demo/apiv2/getuserlist --》 /demo/api/v2/getuserlist
/demo/apiv3/getuserlist --》 /demo/api/v3/getuserlist
Nginx中定义路由重定向,conf文件中添加如下语句:
rewrite ^\/demo\/api\/(v\d+)\/([^\?]*)$ /demo/index.php/api$1/$2 break;
四、验证测试
app发起请求 --》根据Nginx路由重写规则,重定向 --》定位到目标action。