关于 API 设计文章太多太多,这里不赘述,仅“点”一下,具体的查看文末资源。
- 数据建模(Data-oriented),而非功能建模(Function-oriented)
- 所有事物抽象为资源,URI 是唯一标识(定位资源)
- 使用 HTTP Methods 操作资源
- 资源操作安全性、幂等性
- 检索对象资源
- 检索对象结构资源(数据集合)
- 检索对象子资源
- 数据分页
- 实体关联:查询参数,或URL 层级路径
- 参数进行编码
- 标识缓存性
- 无状态
- URI:名词(资源可与数据库表名对应),小写,
-
,资源集合用复数, - 使用 HTTPS
- API 作为子域名
- 身份认证:OAuth2.0, JWT
- 数据格式
- 不要试图创建自己的错误码和返回错误机制
- 不要试图变相使用 HTTP Methods 实现额外功能
- 应用层添加错误追踪机制
- 理解RESTful架构 - 阮一峰的网络日志
- RESTful API 设计指南 - 阮一峰的网络日志
- RESTful API 设计指南——最佳实践 - OSCHINA
- API 设计指南 - Best practices for cloud applications | Microsoft Docs
- API 设计指南 | Cloud API | Google Cloud
- 最佳实践:更好的设计你的 REST API | IBM Developer
- Zalando RESTful API和事件方案指南
- GitHub API v3 | GitHub Developer Guide
- Example(火狐访问可解析):https://api.github.com/,这个入口,为全站所有资源入口
另外一种API设计方式——GraphQL