restful规范

发布时间 2024-01-07 17:34:19作者: 朱饱饱

1 Representational State Transfer:表征性状态转移
2 Web API接口的设计风格,尤其适用于前后端分离的应用模式中
3 与语言,平台无关,任何框架都可以写出符合restful规范的api接口
4 规范:10条
-1 数据的安全保障:url链接一般都采用https协议进行传输
-2 接口特征表现:api关键字标识
-https://api.baidu.com/books/
-https://www.baidu.com/api/books/
-3 多版本共存:url链接中标识接口版本
-https://api.baidu.com/v1/books/
-https://api.baidu.com/v2/books/
-4 数据即是资源,均使用名词(可复数)***********
-接口一般都是完成前后台数据的交互,交互的数据我们称之为资源
-一般提倡用资源的复数形式,不要使用动词
-查询所有图书
-https://api.baidu.com/books/
-https://api.baidu.com/get_all_books/ # 错误示范
-https://api.baidu.com/delete-user # 错误的示范
-https://api.baidu.com/user # 删除用户的示例:疑问:到底是删还是查?

-5 资源操作由请求方式决定:
https://api.baidu.com/books - get请求:获取所有书
https://api.baidu.com/books/1 - get请求:获取主键为1的书
https://api.baidu.com/books - post请求:新增一本书书
https://api.baidu.com/books/1 - put请求:整体修改主键为1的书
https://api.baidu.com/books/1 - patch请求:局部修改主键为1的书
https://api.baidu.com/books/1 - delete请求:删除主键为1的书

-6 过滤,通过在url上传参的形式传递搜索条件
https://api.example.com/v1/zoos?limit=10 :指定返回记录的数量
https://api.example.com/v1/zoos?offset=10&limit=3:指定返回记录的开始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序
https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件

-7 响应状态码
-返回数据中带状态码
-{'code':100}
-8 返回结果中带错误信息
-{'code':100,'msg':'因为xx原因失败'}
-9 返回结果,该符合以下规范
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象(字典)
POST /collection:返回新生成的资源对象 (新增后的对象字典)
PUT /collection/resource:返回完整的资源对象 (修改后的对象字典)
PATCH /collection/resource:返回完整的资源对象 (修改后的对象字典)
DELETE /collection/resource:返回一个空文档 ()

-10 返回的数据中带链接地址
-查询id为1的图书接口,返回结果示例
{'code':100,
'msg':'成功',
'result':
{'title':'金',
'price':12.3,
'publish':'https://127.0.0.1/api/v1/publish/3'
}
}