- Web应用是什么
- Web开发模式
- API接口
- postman的使用(apizza)
- Restful规范
- 序列化和反序列化
- DRF的简介和安装
Web应用是什么
1. 通过浏览器访问的应用程序都是Web应用
2. 应用程序的两种模式:
C/S架构
c:client 客户端
s:server 服务端
B/S架构
b:browser 浏览器
s:server 服务端
3. Web应用的优点:
- 1. 只需要一个浏览器
- 2. 节省客户端资源
- 3. 服务端做出改变,会直接响应客户端的效果
4. Web应用的缺点:
- 1. 谷歌浏览器,火狐浏览器,ie浏览器,360浏览器.......浏览器种类多 兼容问题
- 2. 服务端宕机,客户端也立马宕机,不能访问
Web开发模式
1. 前后端不分离,混合开发,把html等静态文件写到我们的python中
2. 前后端分离,前端单独一个项目,后端单独一个项目,后端只需要提供接口,并且以json格式返回
目前,主流项目都是前后端分离,老项目大多是混合开发
API接口
类似于:https://api.map.baidu.com/place/v2/search
1.url:长得像返回数据的url链接
2.请求方式:get、post、put、patch、delete
3.请求参数:json或xml格式的key-value类型数据
4.响应结果:json或xml格式的数据
上方请求参数的参数值决定了响应数据的格式
接口测试工具:Postman
针对post请求的数据,编码方式有3种:
1. urlencoded
name=ly&age=18 => request.POST
2. form-data
name=ly&age=18 => request.POST
-----dsadsadsadsadsad-----
file文件数据 => request.FILES
3. json
在请求体中的格式:
{"name":"ly", "age":18}
'''
在Django中如何获取json格式的数据:
在request.POST中已经取不到值了,在request.body中取值
'''
'''
form上传文件:
1. method='POST'
2. enctype='form-data'
'''
RESTful API规范
1. url链接一般都采用https协议进行传输
http: 数据明文传输
https:数据加密传输, http + ssl
2. 用api关键字标识接口url:
https://api.baidu.com
https://www.baidu.com/api
3. 在url链接中标识数据版本
https://api.baidu.com/v1
https://api.baidu.com/v2
4. 数据即是资源,均使用名词(可复数)
https://api.baidu.com/users
https://api.baidu.com/books
https://api.baidu.com/book
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:指定返回记录的开始位置
7. 响应状态码
200, 301,302, 404, 403, 500
100001
100002
100003
8. 错误处理,应返回错误信息,error当做key
{
error: "无权限操作"
}
9. 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /books:返回资源对象的列表(数组)[{}, {}, {}]
GET /books/1:返回单个资源对象 {}
POST /books:返回新生成的资源对象
PUT /books/1:返回完整的资源对象
PATCH /books/1:返回完整的资源对象
DELETE /books/1:返回一个空文档
10 需要url请求的资源需要访问资源的请求链接
序列化
序列化: 把我们识别的数据转换成指定的格式提供给别人。
反序列化:把别人提供的数据转换/还原成我们需要的格式
Django Rest_Framework
'''
1. Django Rest_Framework 简称drf, 他就是django的第三方app 本质是可以快速写接口
2. pip3 install djangorestframework
3. drf最新版本不支持django1.x, 升级django版本为:django2.x
'''