We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在开发 BFF 层时候,会涉及到很多 api 设计,无论是命名还是请求方法,没有一定的套路,会很慕凌两可,没有任何头绪。
基于这些痛点,从 8 个维度对 API 进行探讨
协议
基本上都是 http 或 https 协议
域名
如果是大型服务,一般会为 api 开专属域名
https://api.xxx.com
不过,一般来说,对于简单的 api 都是加在主域名下面
https://xxx.com/api/
版本
随着迭代的进行,api 可能有 v1,v2,v3 等,这样的设计的好处是,不同版本下接口含义相同无所谓,譬如说,同样是部署功能,v1 版可能是 a 逻辑,v2 版可能是 b 逻辑,这样可以兼容旧版本
https://xxx.com/api/v1/ https://xxx.com/api/v2/
另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。
路径
路径又称"终点"(endpoint),表示 API 的具体网址。
在 RESTful 架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以 API 中的名词也应该使用复数。
https://xxx.com/api/v1/zoos
方法
过滤信息(Query)
综合来说,对于 GET 请求,用到 query 时要想着过滤两个字
?limit=10:指定返回记录的数量 ?offset=10:指定返回记录的开始位置 ?page=2&per_page=100:指定第几页,以及每页的记录数。 ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。 ?animal_type_id=1:指定筛选条件
状态码
Hypermedia API
这是一个新的思路,Hypermedia API 是指返回结果中提供链接,连向其他 API 方法,使得用户不查文档,也知道下一步应该做什么。
譬如当用户向 api.example.com 的根目录发出请求,会得到这样一个文档。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}
文档中有一个 link 属性,用户读取这个属性就知道下一步该调用什么 API 了。rel 表示这个 API 与当前网址的关系(collection关系,并给出该collection的网址),href 表示 API 的路径,title 表示 API 的标题,type 表示返回类型。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
基于这些痛点,从 8 个维度对 API 进行探讨
协议
基本上都是 http 或 https 协议
域名
如果是大型服务,一般会为 api 开专属域名
不过,一般来说,对于简单的 api 都是加在主域名下面
版本
随着迭代的进行,api 可能有 v1,v2,v3 等,这样的设计的好处是,不同版本下接口含义相同无所谓,譬如说,同样是部署功能,v1 版可能是 a 逻辑,v2 版可能是 b 逻辑,这样可以兼容旧版本
另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。
路径
路径又称"终点"(endpoint),表示 API 的具体网址。
在 RESTful 架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以 API 中的名词也应该使用复数。
方法
过滤信息(Query)
综合来说,对于 GET 请求,用到 query 时要想着过滤两个字
状态码
Hypermedia API
这是一个新的思路,Hypermedia API 是指返回结果中提供链接,连向其他 API 方法,使得用户不查文档,也知道下一步应该做什么。
譬如当用户向 api.example.com 的根目录发出请求,会得到这样一个文档。
文档中有一个 link 属性,用户读取这个属性就知道下一步该调用什么 API 了。rel 表示这个 API 与当前网址的关系(collection关系,并给出该collection的网址),href 表示 API 的路径,title 表示 API 的标题,type 表示返回类型。
The text was updated successfully, but these errors were encountered: