drf
作者:互联网
-
web开发模式
-
api接口
-
api接口测试工具
-
restful规范
-
序列化反序列化
-
drf快速使用
web开始模式
# 我们所见到的软件百分之九十都是web软件,只要通过http,websocket...
# web后端--》python 后端开发--》不仅仅是开发网站
eg:微信 迅雷,百度网盘...
osi七层 MySQL,redis: tcp传输层--》应用层http
# 两大种
前后端混合开发
既要写后端(既要写后端(django:python界的web框架),又要写前端(js,css,html + 模板语法(dtl))
前后端分离(时下主流)
后端人员只写后端,一点前端都不碰,对外提供接口(django、flask、sanic、fastapi、spring boot,gin,beego...)
前端人员只写前端 (vue,react)
如果使用前后端分离模式,dtl,模板语法完全没有用武之地
bom:BOM是browser object model的缩写,简称浏览器对象模型。是用来获取或设置浏览器的属性、行为,例如:新建窗口、获取屏幕分辨率、浏览器版本号等。 比如 alert();弹出一个窗口,这属于BOM
什么是DOM
dom:js操作html--》通过js插入到html中一些表格,div标签
api接口
# 前后台信息交互的媒介
前端(pc,小程序,app)---》 后端
路由--》视图函数》返回json数据格式数据 这个东西称之为api接口
写接口要有规范》restful规范
# 为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,减少双方的合作成本
# 别人提供的一些资源,以api接口的形式给你,你就直接访问就可以拿到
# 接口的概念很大》api接口》只针对 http请求返回xml、json数据的这种接口
api接口测试工具
# 后端开发 》开发了很多api接口(可能公司用,给第三方用)
# 写完了,有没有问题 》测试》测试工具》postman...
# 接口测试工具:用法基本一致,以postman为例
# 测试工程师--》接口测试工程师
# form-data urlencoded json请求编码
上传文件 form、ajax表单默认 只能用ajax,contentType:application/json
# django中,如果使用form-data或者urlencoded编码--》提交的数据直接从POST取出来
# 如果是json格式编码,从POST取不出来,只能从request.body 取出来,json转一下才能用
# postman 就是一个替代浏览器,发送http请求的工具
# 因为用浏览器不能发送post请求,只能用代码写ajax发送请求
# 通过postman可以发送任意请求
# collection:可以批量的管理,导入很多api接口
restful规范
# 写api接口,可能想写成什么样就什么样,有个规范》主流认可》restful规范
# REST全称是Representational State Transfer 表整形状态转移
# RESTful是一种定义web API接口的设计风格,尤其适用于前后端分离的应用模式中
# 10条规范
1.使用https数据交互 http+tsl/ssl=http 比http更安全,交互是加密传输
交互用json-》很轻易被截获--》明文显示给别人,数据不安全
2.接口地址中带api标识
https://api.baidu.com.books 域名中
https://www.baidu.com/api 地址中
3.接口地址中标识版本标识
http://api.baidu.com/v1
https://api.weibo.com/2/statuses/user_timeline.json
-登陆功能:用户名密码 如果把原来的接口改了---》老app还能用吗?
-升级了app:用户名密码验证码 新写一个接口
4.数据即是资源,均使用名词,不要出现动词
删除xx接口
好的:https://api.baidu.com/v1/xx
不好的:https://api.baidu.com/v1/delete-xx
新增xx:https://api.baidu.com/v1/xx
5.资源操作由请求方式决定
-新增xx :https://api.baidu.com/v1/xx post
-删除xx :https://api.baidu.com/v1/xx delete
-修改xx :https://api.baidu.com/v1/xx put
-获取xx :https://api.baidu.com/v1/xx get
6.地址中带搜索条件
https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
https://api.baidu.com/v1/books?name=红楼梦
7 相应状态码
http的响应状态码
1xx 请求正在请求
2xx 成功 200 请求成功 201 创建成功
3xx 重定向 301 和 302 301和302的区别: 一个是临时重定向一个是永久重定向
4xx 客户端错误 403 和 404 403:没有权限 404:地址不存在
5xx 服务端错误
响应中带状态码
{code:100}
8. 响应中带错误信息
{code:999,msg:登录失败}
9.针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
10 响应中带链接地址
序列化反序列化
# 序列化:把我们识别的数据转换成指定的格式提供给别人
python后端:python的对象,字典,列表
前端:字符串,json格式化字符串
把我们能识别的格式--》转成别人能识别的格式给他
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或者别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人
# 反序列化:把别人提供的数据转换/还原成我们需要的格式
前端:字符串,json格式字符串 提交给我们
python后端:把json格式字符串转成我们能够识别的格式:字典,对象,qs对象
例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中
# 前后端分离开发中 》站在后端开发的角度
序列化--》read(别人读我的数据)--》出---》后端给前端
反序列化--》wite(别人给我数据--》存到数据库)进--》前端给后端
drf快速使用
# djangorestframework的缩写,它是django的一个app(第三方插件),只能用在django框架上
# 可以帮助我们快速的写出符合restful规范的接口
# drf和django的版本有一定的对应关系
如果是django 2.2.2 drf最新可能不支持(稍微降一下drf版本)
# 快速使用--》以后见到的所有接口,都是这五个和变形
-增加图书:
-获取一本图书
-获取所有图书
-删除一本图书
-修改一本图书
标签:--,接口,xx,api,https,com,drf 来源: https://www.cnblogs.com/qinyanghua/p/16371607.html