前台与后台进行信息交互的媒介 -- url链接
url链接 - http://127.0.0.1:9000/api/users/
请求方式 - get(查), post(增), put(整体改), patch(局部改), delete(删)
请求参数 - 拼接参数, 数据包参数(urlencoded, json, form-data)
响应结果 - 响应的 json数据
开发阶段接口测试工具
| 1 | Postman: | 
url将数据返回给前台url链接url 编写
https://api.baidu.com/books/?limit=3&ordering=-price)请求方式
响应结果
基于restful接口规范的接口设计
| 1 | urlpatterns = [ | 

as_view方法完成路由配置,返回配置函数是 csrf_exempt(view),也就是禁用了csrf认证规则
所有继承APIView的子类,都不受csrf认证规则的限制
将请求处理的任务交给dispath方法完成

二次封装了原生Django的uwsgi协议的request对象,并做了向下兼容(原来request对象的内容,用现在的request对象都能访问)
将所有拼接参数都放在request.query_params中,将所有数据包参数都放在request.data中
路由的有名无名分组的数据还是保存在args和kwargs中
解析模块在 setting.py自定义解析设置
| 1 | REST_FRAMEWORK = { | 




当三大认证模块和自己处理请求的视图逻辑没有出现异常时,会执行响应渲染模块
响应的数据会交给渲染模块来完成数据的渲染,渲染方式有两种:Json格式数据渲染、Brower格式数据渲染
自定义渲染模块解析配置
| 1 | REST_FRAMEWORK = { | 
参数
| 1 | """ | 
常见使用
| 1 | Response( | 

初始化参数
| 1 | def __init__(self, instance=None, data=empty, **kwargs): | 
models.py
| 1 | from django.db import models | 
serializers.py
| 1 | from rest_framework import serializers | 
views.py
| 1 | from rest_framework.views import APIView | 
views.py
| 1 | class UserAPIView(APIView): | 
反序列化
serializers.py
1: 不管是序列化还是反序列化字段,都必须在fields中进行声明,没有声明的不会参与任何过程(数据都会被丢弃)
2: 用 read_only 表示只读,用 write_only 表示只写,不标注两者,代表可读可写
3: 自定义只读字段,在model类中用@property声明,默认就是read_only
| 1 |  | 
4: 自定义只写字段,在serializer类中声明,必须手动明确write_only
| 1 | re_password = serializers.CharField(write_only=True) | 
特殊)在serializer类中声明,没有明确write_only,是对model原有字段的覆盖,且可读可写
password = serializers.CharField()
5: 用 extra_kwargs 来为 写字段 制定基础校验规则(了解)
6: 每一个 写字段 都可以用局部钩子 validate_字段(self, value) 方法来自定义校验规则,成功返回value,失败抛出 exceptions.ValidationError(‘异常信息’) 异常
7: 需要联合校验的 写字段们,用 validate(self, attrs) 方法来自定义校验规则,,成功返回attrs,失败抛出 exceptions.ValidationError({‘异常字段’: ‘异常信息’}) 异常
8: extra_kwargs中一些重要的限制条件
i)‘required‘:代表是否必须参与写操作,有默认值或可以为空的字段,该值为False;反之该值为True;也可以手动修改值| 1 | class AuthorModelSerializer(serializers.ModelSerializer): | 
| 1 | """ | 
url.py
| 1 | url(r‘^authors/$‘, views.AuthorAPIView.as_view()), | 
serializers.py
| 1 | from rest_framework import serializers | 
views.py
| 1 | # 实际开发,资源的大量操作都是查询操作,只有查需求的资源,可以采用子序列化 | 
| 1 | """ | 
urls.py
| 1 | url(r‘^books/$‘, views.BookAPIView.as_view()), | 
models.py
| 1 | class Book(BaseModel): | 
serializers
| 1 | # 辅助序列化类 | 
views.py
| 1 | # 六个必备接口:单查、群查、单增、单删、单整体改(了解)、单局部改 | 
| 1 | """ | 
serializers.py
| 1 | class BookModelSerializer(serializers.ModelSerializer): | 
| 1 | """ | 
| 1 | """ | 
models.py
| 1 |  | 
urls.py
| 1 |  | 
serializers.py
| 1 | from rest_framework import serializers | 
views.py
| 1 | from rest_framework.views import APIView |