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。
相关推荐
向下兼容的API版本筛选器 通过注解的方式优雅的实现接口版本向下兼容,针对日常线上接口版本迭代提供了可靠的解决方案,已经历大量的线上验证,可靠!
既能不升级jar包又能使用高版本依赖同时还不造成冲突的完美解决方案
F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。在之前,我们一般有三种解决方案:本机安装大量的虚拟机,一个浏览器一个虚拟机,优点:真实,缺点:消耗硬盘资源,消耗CPU资源,打开...
protel99与win7兼容问题的解决方案
该方法包含两种方案解压和压缩文件夹及文件 1.常用的压缩,工程中引用该...第二个方法为系统自带,主要是适用特定的场景用比较老版本的解压软件,这个时候用第二种方法兼容性会非常好,几乎所有的解压软件都可以解压。
4.1.1.3.6 兼容多种集成模式 36 4.1.1.3.7 开放式的框架设计 36 4.1.1.3.8 数据库选型 36 4.1.1.4 应用工具 37 4.1.1.4.1. 开发工具 37 4.1.1.4.2. 分析设计工具 38 4.1.1.4.3. 项目管理辅助工具 38 4.1....
安装测试环境并下载静态文件 cd demo ...curl -o proxy.html http://yanagieiichi.github.io/APIProxy/proxy.html node server.js 打开浏览器并检查控制台 open http://127.0.0.1:1234/index.html
与集群API的兼容性M3IPAM版本CAPV版本集群 API 版本v1alpha1(v0.0.4) v1alpha3 (v0.7.1) v1alpha3 ( >= v0.3.7)文档有关端到端流程的说明,请参阅。部署部署集群 API Provider vSphere 静态 IP make deploy在本地...
兼容方案有变动时,需要改动多处 随着时间推移,你的代码才是最需要并且是最难兼容的 思考 最理想的情况是不需要任何兼容处理,因此可以反推出兼容性处理的代码并不是代码正常流程中的一部分,基于此: 兼容的细节...
go-cloud通过封装不同云平台的接口,向用户提供统一的API,解决了兼容不同云平台SDK的烦恼。该项目旨在简化开发人员在不同云平台之间的切换和集成,提高开发效率和可移植性。
宝马匿名化Api 数据隐私和个人匿名一直是数据驱动公司的主要关注点。 因此,我们设计并实现了一种匿名化API,该API对图像/视频中的敏感信息进行本地化和... 与BMW深度学习工具兼容:通过我们的并通过我们的API部署的D
随着监控量的迅速增长,zabbix管理员有一天会发现硬盘iops达到了数万, 接近硬盘io的极限,无力...本方案设计基于zabbix3.0.10版本。本文只论及对zabbixserver的改造方 案,对webapi的修改方案将另文讨论,本文不涉及。
MATLAB版本问题可以涉及多种情况,以下是一些常见问题和解决策略: ...总之,针对MATLAB版本问题,建议始终查阅MathWorks官网的最新文档,以及每次更新的Release Notes,以获取最准确的支持信息和解决方案。
目录 问题描述 原因分析 ...在Android 10等高版本系统机型上Seekbar的拖拽按钮展示正常,但是在比如Android5.1系统上展示异常。异常现象是拖拽按钮偏离了轨道中心位置,拖拽按钮顶部紧贴控件的顶部边界。
IE 页面空白 报错信息 此时页面一片空白 报错原因 Babel 默认只转换新的 JavaScript 语法(如箭头函数),而...简单的说,兼容问题一般是IE 对于es6 的部分新对象、表达式,语法并不支持,解决方案是使用 babel-poly
LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件 LZRead 将数据从文件读入内存缓冲区 LZSeek 设置一个文件中进行读写的当前位置 MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间 ...
零代码开发api服务,只需编写sql,就可以生成http api服务。支持api动态创建,兼容多种数据库。 适用于BI报表、数据可视化大屏的后端接口快速开发。 旨在为企业数据服务的发布提供完整解决方案
致力于在功耗、安全、可靠性和性能方面提供差异化半导体技术方案的领先供应商美高森美公司(Microsemi Corporation,纽约纳斯达克交易所代号:MSCC) 宣布提供相位兼容嵌入式解决方案,可在广泛的应用范围实施IEEE ...
每个下载版本都包含若干个 JAR 文件,以支持向后兼容性和可能的升级方案。请注意,所提供的 sqljdbc.jar、sqljdbc4.jar 仅用于向后兼容性,并不包含 Driver 版本 4.1 和更高版本的中所包括的新功能。请注意,...
致力于在功耗、安全、可靠性和性能方面提供差异化半导体技术方案的供应商美高森美公司(Microsemi Corporation,纽约纳斯达克交易所代号:MSCC) 宣布提供相位兼容嵌入式解决方案,可在广泛的应用范围实施IEEE 1588。...