接口设计
*.Restful API
[概述] REST是指表现层状态转移(Representational State Transfer). 该概念首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 其中,表现层是资源的表现层,对于网络中的资源就需要URI来定位.
1.协议
使用http或https. 对外有安全性要求时可食用https. 但内部服务器间调用可使用http或https(从效率角度通常使用http).
2.请求方法(动词)
常用方法(动词/动作) | 说明 | 常用方法(动词/动作) | 说明 |
---|---|---|---|
GET | 获取资源 | POST | 新增资源 |
PUT | 更新资源 | DELETE | 删除资源 |
PATCH | 全量更新(除主键外全更新) | ... |
3.请求路径(名词)
[概述] Restful风格中,使用名词作为路径. URL用于指向资源,路径描述中只使用名次,不要出现动词,动词由HTTP方法提供.且名词不要单复数混用,建议全部使用复数形式. Restful的核心是资源,URL应该指向资源,所以应该使用名次表达,而非动词.
HTTP方法(指定动词) | 请求路径(指定名次) | 说明 |
---|---|---|
GET | /users /users/posts |
(根资源的访问) 获取所有用户的用户信息 (子资源的访问) 获取所有用户的文章信息 |
GET | /users/10 /users/10/posts |
(根资源的访问) 获取id为10的用户的用户信息 (子资源的访问) 获取id为10的用户的文章信息 |
POST | /users | 新增用户信息 |
PUT | /users/10 | 更新id为10的用户信息 |
DELETE | /users/10 | 删除id为10的用户信息 |
PATCH | /users/10 | 部分更新id为10的用户信息 |
4.集合功能(查询)
过滤Filtering: 可以通过查询字符串指定筛选条件
排序Sorting: 设计方式有很多,例如可以使用+表示升序(asc),-表示降序(desc)
分页Pagination
5.状态码
状态码 | 请求方法 | 说明信息(英文) | 说明信息(中文) |
---|---|---|---|
200 | GET | OK | 成功获取资源 |
201 | POST、PUT、PATCH | CREATED | 成功创建或修改资源 |
204 | DELETE | NO CONTENT | 成功删除资源 |
400 | ALL | Bad Request | 请求错误,如GET参数有问题/PUT提交的数据错误等 |
401 | ALL | Unauthorized | 权限未通过认证 |
403 | ALL | Forbidden | 有权限都禁止访问该资源 |
404 | ALL | Not Found | 请求的资源不存在 |
500 | ALL | Internal Server Error | 服务器端错误 |
6.错误处理
{
"error": 'User Not Found'
}
{
"code": 10056,
"message": "Invalid ID",
"description": "More details"
}
7.接口版本
8.返回结果
HTTP方法 | 请求路径 | 说明 |
---|---|---|
GET | /users | 获取所有用户的用户信息,返回JSON对象列表 |
GET | /users/10 | 获取id为10的用户的用户信息,返回查到的JSON对象 |
POST | /users | 新增用户信息,返回新增的JSON对象 |
PUT | /users/10 | 更新id为10的用户信息,返回修改后的JSON对象 |
DELETE | /users/10 | 删除id为10的用户信息,返回空JSON对象 |
PATCH | /users/10 | 部分更新id为10的用户信息,返回修改后的JSON对象 |