素材牛VIP会员
大家的restful 的地址是怎么带有版本号的
 蒙***生  分类:ThinkPHP  人气:1127  回帖:2  发布于6年前 收藏

请教一个问题,(大概意思就是:怎么让带有不同版本号的url地址访问不同的目录文件

大家写接口的路由怎么配置的,一直想不明白 restful 模式的版本号到底是配置在路由里面,还是怎么配置,目前我的是这样的,用的 tp5

 标签:thinkphprestfulphp

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv4 码徒
飞***6 Linux系统工程师 6年前#1

一个很不错的问题。

直接在URL资源中控制版本号,不是很好的方案。因为对于客户而言一个URL应该是一个永久性,否则你的一次版本升级都会影响到客户的使用。其次,当一个API接口版本过多的时候,客户的升级又比较滞后的情况下,有可能会因为你对旧版本的删除而影响客户的使用。

所以,斯以为,如果需要版本号控制,可以在 headers 中体现。

https://domain.com/api/get/1
application/json; version=1.0

或,让URL始终有最新的永久性,而同时保持版本间的永久性。

假如你当前的版本号是 v2,那么对于最新版本有两个永久性链接:

-- 最新V2
https://domain.com/api/get/1 
-- 最新V2
https://domain.com/api/**v2**/get/1
-- 旧版本V1
https://domain.com/api/**v1**/get/1
Lv2 入门
随***@ 技术总监 6年前#2
  1. 制定版本并在版本之间平缓过渡对于设计和维护一套API是个巨大的挑战。所以,最好在设计之初就使用一些方法来预防可能会遇到的问题。
    为了避免API的变动导致用户使用中产生意外结果或调用失败,最好强制要求所有访问都需要指定版本号。请避免提供默认版本号,一旦提供,日后想要修改它会相当困难。

  2. 最适合放置版本号的位置URL中,或者是头信息(HTTP Headers)中在 Accept 段中使用自定义类型(content type)与其他元数据(metadata)一起提交。

https://api.example.com/v1/
或
Accept: application/vnd.heroku+json; version=3

详细的Restful API设计方案,可以参考我的文章:微服务指南走北(三):Restful API 设计简述

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取