restful
软件架构风格,是一种思想
主要用在客户端和服务端这种模型中
实现的就是前后端分离
- 每一个URL代表1种资源;
- 客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
- 通过操作资源的表现形式来操作资源;
- 资源的表现形式是XML或者HTML;
- 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息
理解
变现层状态转换
表征性状态转移
其实就是资源(Resource)的表现形式发生了转换
客户端要实现状态转换,通过请求谓词
GET
POST
PUT
DELETE
PATCH
可以通过将django项目中的views.py或者models.py等文件转换成python包的形式,来区分不同的对象的操作,例如将某个类的视图函数统一放在views包中的某一个.py文件中,然后在views包的__init__.py文件中导入相关视图函数来调用
Api设计原则
协议 http(s)
专属域名或前缀
可以在路径中包含版本
在QueryString包含过滤信息
路径通常是名词复数
传输格式JSON
尽量带有超链接
认证使用OAuth2.0
认证时返回token,通过token来验证信息,保证信息的安全性
简单实现
针对一个接口的不同请求方式,进行不同的处理
GET /collection/
获取一个集合/列表
GET /collection/id/
获取单个数据
POST /collection/
创建一个对象
POST /collection/id/
修改/更新数据
PUT
PATCH
DELETE /collection/id/
删除一个对象
接口创建好之后进行接口测试、
模拟请求工具:
Pycharm自带的模拟请求工具
Tools——HTTP Client中的模拟请求工具
Postman
httpie
视图函数:
视图函数分为两种
FBV:
function base view
使用函数实现的视图
CBV
class base view
使用类实现的视图
此时我们发现在Django中,MTV都可以继承
类视图
使用
继承自系统的类视图View
书写请求方法对应的函数、函数名就是请求方法名字的小写
注册路由 类视图.as_view()
类视图源码,执行流程
客户端->urls
urls -> as_view()
as_view()中进行的操作
dispatch
根据请求方法去类中查找属性
不存在则直接抛异常:请求方法不被允许
如果存在 调用对应的方法
传参
参数必须是已经存在的非请求方法的方法名字的属性
默认支持options请求
默认head请求和get一致
类视图
View
as_view
内部定义了一个view
dispatch
根据请求方法的名字进行分发
View的子类
TemplateView
通过多继承实现的
需要指定template_name
ListView
渲染在模板上
template_name
数据
queryset
DetailView
渲染在模板上
template_name
数据
model
queryset
单一实例
pk
slug
以后大部分情况是前后端分离,view的子类需要了解