def学习一
def学习一
简介:web开发模式、api接口、测试工具、restful规范、序列化与反序列化、drf快速使用
web开发模式
Web的本意是蜘蛛网和网,在网页设计中称为网页。现广泛译作网络、互联网等技术领域,表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)、超文本传输协议(HTTP)等。WEB技术指的是开发互联网应用的技术总称,一般包括WEB服务端技术和WEB客户端技术。
复习知识点:HTTP协议是TCP协议族中的一种,HTTP是应用层协议,TCP是传输层协议。
iso七层协议:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
web开发模式占软件开发的主流
前后端开发模式
1.前后端混合开发
我们现在所编写过的bbs项目就是属于前后端混合开发
特点:写了后端还需要写前端(后端:web框架、django框架|前端html、css、js还有模板语法dtl)
这里穿插一个概念;dtl模板语法虽然是写在前端的东西;但实际上是后端执行的过程;所以你的前端小姐姐很可能不会认识你的模板语法代码。
(老刘图画太好了,我觉得我没必要再多此一举)
2.前后端分离
特点:后端人员只写后端;前端人员只写前端;前后端完全分离;后端人员只提供接口,前端负责用js里的dom或者bom去渲染页面;操作标签。
api接口
接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口;
接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
api接口是接口的一个种类;只负责针对与http请求返回json(xml)数据的这种接口。
接口也可以理解为资源的钥匙,拥有对应的接口,就可以拿到对应的资源;在微博上有开放的api接口;我们就可以利用其公开的资源,做出类似微博的项目。
开放的接口对应开放的资源;内部的接口就对应着内部的资源。
api接口测试工具
后端开发产生的api接口,可能说会给到不同的地方使用,比如说浏览器端,客户端app;那么这个接口在使用前肯定是需要进行测试的。
接口完成-->自我测试-->测试功能-->postman
form-data 上传文件
urlencoded form、ajax表单默认
这两种方法提交的数据,可以直接通过request.POST 去获取到请求的数据
json 请求编码只能用ajax,contentType:application/json
这种方法提交的数据只能通过request.body取出来,然后使用json解码使用
postman 就是一个替代浏览器,发送http请求的工具
因为用浏览器不能发送post请求,只能用代码写ajax发请求
通过postman可以发送任意请求
collection:集合
测试工具图解
form-data上传文件、x-www默认编码、raw是使用json格式的编码
restful规范
很多地方都有很多对应的规范;我们的api接口同样也restful规范;
REST全称是Representational State Transfer 表征性状态转移
十条规范
- 使用https数据交互 http+tsl/ssl=https 安全性高于http
http中的json数据如果被截获,将等于明文暴露,而https就算数据被截获,其数据也已经被加密过,没有对应的证书是无法破解其内容的。
- 接口地址中带api表示
https://api.baidu.com/books 域名中
https://www.baidu.com/api 地址中
-
接口地址中标识版本标识
-https://api.baidu.com/v1 -https://api.weibo.com/2/statuses/user_timeline.json
登陆功能:用户名密码 如果把原来的接口改了---》老app还能用吗?
升级了app:用户名密码验证码 新写一个接口 -
数据既是资源,均使用名词,不使用动词
-删除图书接口
-好的:https://api.baidu.com/v1/books
-不好的:https://api.baidu.com/v1/delete-books
- 资源操作由请求方式决定
-新增图书:https://api.baidu.com/v1/books post
-删除图书:https://api.baidu.com/v1/books delete
-修改图书:https://api.baidu.com/v1/books put
-获取图书:https://api.baidu.com/v1/books get
- 地址中带搜索条件
-https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
-https://api.baidu.com/v1/books?name=红楼梦
-
响应状态码
http的响应状态码
-
响应中携带错误信息
{code:999,msg:登陆失败}
-
针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /collection:返回资源对象的列表(数组)
-[{name:红楼梦,price:12},{name:西游记,price:12}]
GET /collection/resource:返回单个资源对象
-{name:西游记,price:12}
POST /collection:返回新生成的资源对象
-{name:西厢记,price:12}
PUT /collection/resource:返回完整的资源对象
-{name:西游记,price:12}
PATCH /collection/resource:返回完整的资源对象
-{name:西游记,price:12}
DELETE /collection/resource:返回一个空文档
-
-10 响应中带链接地址
序列化反序列化
这个地方已经学习过很多次了,这个地方只要是复习并将这个序列化在前后端分离开发中去重新理解一下
序列化🥦:把我们识别的数据转换成指定的格式提供给别人。
反序列化🥦:把别人提供的数据转换/还原成我们需要的格式。
前后端分离开发中:
-序列化----》read(别人读我的数据)---》出---》后端给前端
-反序列化---》wite(别人给我数据--》存到数据库)---》进---》前端给后端
drf快速使用
djangorestframework 的缩写,它是djagno的一个app(第三方插件),只能用在django框架上
作用:可以帮助我们快速的写出符合restful规范的接口