- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[最新]API设计原则
API设计原则;为什么设计api?;api存在的形态?无处不在;优秀API所具备的特征?;API设计通用原则;3.兼容性:向后兼容
4.文档:对外提供清晰的API和文档规范,避免用户错误的使用API,尤其是避免API靠后级别的API被用户知晓与误用;SDK,console tools
5.可测试性:不依赖实现
6.职责明确:一个接口实现一个业务
7.高内聚低耦合:一个接口实现一个完整的业务功能,而不是多个接口调用
;8.参数格式统一:不要一会儿逗号分隔,一会儿数组;日期一会儿是yyyyMMdd,yyyy-MM-dd
9.状态和消息:告知用户成功还是失败,失败原因
10.控制数据量:过多数据传输压力大,客户端反应缓慢,是否接口划分不明?
11.禁止随意扩展api和参数:新建接口要有充分理由和考虑,加参数必要要有意思,首先应考虑现有内部接口维护是否能满足,不要为了方便实现加参数
;HTTP API设计原则;6.过滤(filter):
limit,offset,page,per_page,sortby,order,animal_type_id
7.状态码(status code):
8.错误处理(error handling):
{
error: Invalid API key
}
9.数据格式:json,避免xml
10.时间格式:不同时区人调用,使用UTC时间
;200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]用户发出的请求有错误
401 Unauthorized - [*] 用户没有权限(令牌、用户名、密码错误)
403 Forbidden - [*] 用户得到授权,但是访问是被禁止的
404 NOT FOUND - [*]不存在的记录
406 Not Acceptable - [GET]用户请求的格式错误
410 Gone -[GET]用户请求的资源被永久删除
422 Unprocesable entity - [POST/PUT/PATCH]当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR - [*] 服务器发生错误
;11.外键数据,便于扩展:
{
name: service-production,
owner: {
id: 5d8201b0...
}
}
而不是
{
name: service-production,
owner_id: 5d8201b0...,
...
}
;12.限制调用次数:token bucket 算法 ,RateLimit-Remaining 返回剩余的请求次数
13.压缩json数据:回车空格去掉
14.提供文档和工具:保持更新,提供sdk,console工具
;谢谢!
文档评论(0)