restful api 接口设计指南
概述
- 前后端通信,可采用restful风格的api,除了restful api还有另一种风格的api Graphql
- 本质上其实就是编写http请求的一种规范
常见的http方法
- GET:获取资源(请求参数一般附加在url后面)
- POST:创建新资源(请求参数一般放在请求体body中)
- PUT:更新现有资源(请求参数一般也是放在body中)
- DELETE:删除资源(删除一般是删除指定id,id放在url后面)
URL设计
url应该表示资源,而不是动作,应该使用http方法表示动作
例子:
GET /users (正确)GET /getUsers(不推荐)
POST /users (正确)POST /createUser(不推荐)
使用复数形式表示资源集合
例子:
- GET /users (正确)GET /user(不推荐)
请求和响应设计
- http状态码
分类 | 描述 |
---|---|
1** | 信息性状态码,一般不常用 |
2** | 成功状态码 |
3** | 重定向状态码,一般不常用 |
4** | 客户端错误状态码,多半是前端参数错误 |
5** | 服务端错误状态码,多半是后端接口错误 |
- 常用的状态码(避免滥用200状态码来表示所有情况)
状态码 | 描述 |
---|---|
200(OK) | 请求成功时使用 |
400(Bad Request) | 客户度(一般是前端)语法错误,后端服务不能理解 |
401(Unauthorized) | 没有授权,需要进行身份认证 |
403(Forbidden) | 访问被禁止,原因很多 |
404(Not Found) | 请求资源找不到 |
500(Internal Server Error) | 服务端内部错误 |
502(Bad Gateway) | 网关错误或者代理服务器错误,一般是挂掉了 |
504(Gateway Time-out) | 网关超时,没有及时响应 |
- 请求响应传输格式:使用JSON
- 响应实体设计(golang为例)
// Response 常规响应实体封装 |
来做第一个留言的人吧!