最近新开了一个项目需要重新设计一套针对app
的接口
我们使用的是 PHP + laravel
最开始的设计方案是abc.com/api/v1
作为线上的访问入口qa.abc.com/api/v1
作为测试环境的访问入口pre.abc.com/api/v1
作为预发布环境的访问入口
但是看了看网上的设计规范, 比较推荐另外一种方式api.abc.com
和在header中定义version的方式
基于这个规范设计出另外一套接口api.abc.com
作为线上的入口qa-api.abc.com
作为测试环境的入口pre-api.abc.com
作为预发布环境的入口
然后在header
中添加version
但是这样设计带来了一个问题, app
pc
wap
共享同一套代码, 针对api
的几个特定域名, 需要把这几个特定的域名映射到同一套路由上. 感觉这样设计很扭曲.
还有一个问题就是如果使用api/v1
这种设计方法, 我可以把不同的版本生成不同的控制器. 但是如果使用header
version
的方案, 是不是就是在同一个控制器内部再根据version
的值生成不同的数据结构, 随着业务的发展会不会控制器内部的代码复杂度越来越高.
希望大家不吝指教!!!
网上的不一定就是对的,适合的就是好的。我觉得你的就很好。