今日内容总结
restful规范
rest全程是Representational State Transfar 中文的意思是:表征想状态转移,它首次出现在2000年Roy Fielding的博士论文中
RESTful是一种定义Web API接口的设计风格,尤其适合用于前后端分离的应用模式中
1.数据的安全保障 通常使用
https(http+ssl加密/tsl加密)协议
url链接一般都采用https协议进行传输
采用https协议 可以提高数据交互过程中的安全性
2.接口中带有api表示(路由中含有)
https://api.lqz.com/books
https://www.lqz.com/api/books
3.多版本共存 路径中带版本信息
https://api.lqz.com/v1/login
https://www.lqz.com/api/v2/login
#v1和v2就可以表示的版本 假设版本更新也可以保证老版本的运行
4.数据即是资源,尽量使用名词 ,少出现动词(最核心的)
接口一般都是完成前后台数据的交互,交互的数据我们称之为资源
接口形式如下:
https://api.baidu.com/users
https://api.baidu.com/books
#特殊的接口是可以出现动词的 因为这些接口一般没有明确的资源,或者动词就是接口的核心含义
5.资源操作由请求方式决定(method)
操作资源一般都会涉及增删改查,我们提供请求方式来标识增删改查的动作
https://api.baidu.com/booksget请求:获取全部图书
https://api.baidu.com/books/1get请求:获取主键为1的图书
https://api.baidu.com/bookspost请求:新增一本图书
https://api.baidu.com/books/1put请求:修改主键为1的图书
https://api.baidu.com/books/1delete请求:删除主键为1的书
6.在请求地址中带过滤条件
https://api.baidu.com/books?name=红&price=99
可以理解为查询图书名称带红且价格为99的图书
7.响应状态码: 两套
http效应状态码:
"""
1xx : 请求正在处理,
2xx: 成功响应 见最多的就是
200(成功)服务器已成功处理了请求。通常,这表示服务器提供
了请求的网页。
201(已创建)请求成功并且服务器创建了新的资源。
3xx: 重定向 301 永久重定向 302,307 临时重定向
4xx: 客户端报错 403 没有权限 404 访问的地址不存在
5xx: 服务端报错
503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
"""
第二套:
公司内部自己规定的 放在效应体中
{"code":10000} 类似于这种
8.放回数据中带有错误信息
9.返回的结果应该符合以下规范(好多都不遵循这个)
GET获取所有数据:返回资源对象的列表(数组)
[{name:红楼梦,price:99},{name:红楼梦,price:99},{name:红楼梦,price:99}]
GET单个对象:返回单个资源对象
{name:红楼梦,price:99}
POST新增对象:返回新生成的资源对象
{name:西游记,price:99}
PUT修改对象:返回完整的资源对象
{name:西游记,price:100}
DELETE删除对象:返回一个空文档
10.响应数据中带链接
序列化与反序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把【数据转换格式】,序列化可以分两个阶段:
-
序列化:把我们识别的数据转换成指定的格式提供给别人
字典,列表 json格式存到文件中了
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或者别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人
当我们读数据的时候,把数据从数据库中把数据读出来
然后把数据序列化成
json格式字符串
然后发送到前端我们一般把读数据就是序列化操作
-
反序列化:把别人提供的数据转换/还原成我们需要的格式
例如:前端js提供的
json
数据,对于python
来说就是字符串,我们需要进行反序列化,才能把数据保存到数据库中当我们写数据,前端发送过来的数据,前端发送的数据就是字符串
我们需要把字符串反序列化成数据能保存的数据。
我们一般把写数据就是反序列化