##前言
RESTful规范现在是应用最广泛的一种api规范,市面上还有GraphQL等规范,但是感觉相比总有一些缺点,例如无法做缓存等等
域名
域名配置,一般api都要自己配置二级域名
http://api.ysyydz.cn
版本
正常情况是将API的版本号放入URl
https://localhost:5000/v1/
有的也会放在header中
Accept: vnd.example-com.foo+json; version=1.0
但是这种感觉不太好
HTTP方法
每种资源的具体操作都有具体的实现方法
常用方法
GET(SELECT):从服务器取出资源(一项或多项)
POST(CREATE):在服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)
DELETE(DELETE):从服务器删除资源
非常用方法
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)
HEAD:获取资源的元数据
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的
正确示范
获取服务器列表(GET方法)
curl http://localhost:5000/services
增加服务器(POST方法)
curl -d "ip=127.0.0.1&passwd=123456" http://127.0.0.1:8080/services
删除服务器(DELETE)
curl -X DELETE http://127.0.0.1:8080/services/<serve_id>
路径
网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数
获取服务器列表
curl http://localhost:5000/services
获取单个服务器
curl http://localhost:5000/devices/<device_id>
增加服务器
curl -X POST -d "ip=127.0.0.1&passwd=123456" http://127.0.0.1:8080/services
状态码
状态码对应着各种错误,正常来说,状态码即代表所返回的错误信息
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
204 NO CONTENT - [DELETE]:用户删除数据成功。
301 永久重定向
302 临时重定向
400 用户发出的请求有错误,服务器没有进行新建或修改数据的操作(一般是缺少参数,例如服务端强制三个参数。前端传了两个)
401 Unauthorized - 没有登录
403 登录但是没有权限
404 没有这个api
422 暂时用作自定义错误
错误返回
对于自定义错误需要返回统一的错误格式 例如登录
{
"message": "账号或密码不正确,请您核实",
"errcode": 422,
"Content-Type": "text/html"
}