前后端分离路由设计规则
1:资源作为网址,只能有名词,不能有动词,而且所用名词往往与数据库表名对应。如以下是不好的例子
/getProducts
/listOrders
/retreiveClientByOrder?orderId=1
对于一个简洁结构,应该始终使用名词,如下
GET /products
POST /products
GET /products/4
2:HTTP动词
GET(SELECT):从服务器取出资源(一项或多项) POST(CREATE):从服务器新建一个资源 PUT(UPDATE):从服务器更新资源(客户端提供改变后的完整资源) DELETE(DELETE):从服务端删除资源
PATCH(UPDATE):在服务器更新资源
HEAD:获取资源的元数据
OPTIONS:获取信息,关于资源的某些属性是客户端可以改变的
以下是一些例子:
GET /zoos 列出所有动物园
POST /zoos 新建一个动物园(上传文件)
PUT /zoos/ID 更新某个指定动物园的信息
DELETE /zoos/ID 删除某个动物园
3:状态码
200 OK-[GET]:服务器成功返回用户请求的数据
201 CREATED-[POST/PUT/PATCH]:用户新建或修改数据成功
202 Accepted-[']:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT-[DELETE]:用户删除数据成功
400 INVALID REQEST-[POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized-[*]:表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden-[*]:表示用户得到授权(与401错误相对),但是访问是被禁止的
404 NOT FOUND-[*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作
406 Not Acceptable-[GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
410 Gone-[GET]:用户请求的资源被永久删除,且不会再得到
422 Unprocessable entity-[POST/PUT/PATCH]:当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR-[*]:服务器发生错误,用户将无法判断发出的请求是否成功