RESTful api设计

前置知识:

  • 网络

RESTful api设计

协议: https
域名:
 使用专有域名,如https://api.example.com
 简单,无扩展的话可以 https://expamle.com/api/
版本:
 放入url或http头 https://api.example.com/v1/
路径:
 只能有名词,与数据库表格名相对应,用复数形式,如 https://api.example.com/v1/zoos/
HTTP动词:
 GET (SELECT) 取出资源
 POST (CREATE) 新建资源
 PUT (UPDATE) 改变后的完整资源的更新
 PATCH (UPDATE) 改变资源属性
 DELETE (DELETE) 删除资源
 HEAD 获取资源原数据
 OPINION 知晓哪些属性可以改变
参数过滤:
 ?limit=10 返回记录数量
 ?offset=10 返回记录开始位置
 ?page=1&perpage=10 每页记录数
 ?sotredby=name&order=asc 排序
 ?x_type_id=1 筛选条件
Status Code:
 200 OK
 201 created
 202 accepted 已经进入排队 异步任务
 204 no content 删除成功
 400 invalid request 发出请求有错误
 401 unauthorized 无权限
 403 forbidden 授权但禁止访问
 404 not found 不存在
 406 not acceptable 请求格式不可得(要xml得到json)
 410 gone 永久删除
 422 unprocessable entity 创建对象时候验证错误
 500 internal server error 服务器发生错误
 502 bad gateway 服务器在充当网关或代理时,从其试图完成请求时访问的上游服务器接收到无效响应。
错误信息:
 返回键值对: error : xxx
返回结果:
 GET /collection: 返回资源对象的列表
  /collection/resource: 返回单个
 POST /collection: 新生成的对象
 PUT /collection/resource: 完整资源对象
 PATCH /collection/resource: 同上
 DELETE /collection/resource: 返回空文档
Hypermedia API:
 在返回结果中提供连接连向其他api,便于连向下一步
其他:
 身份认证用OAuth 2.0框架
 多用json

Author

王钦砚

Posted on

2020-04-11

Licensed under

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×