首页 > Windows开发 > 详细

04 APIView的请求生命周期

时间:2020-03-10 22:37:19      阅读:55      评论:0      收藏:0      [点我收藏+]

APIView的请求生命周期

技术分享图片

重写的as_view方法

1)as_view方法完成路由配置,返回配置函数是 csrf_exempt(view),也就是禁用了csrf认证规则
结论:所有继承APIView的子类,都不受csrf认证规则的限制

2)将请求处理的任务交给dispath方法完成

重写dispatch方法

完成了三大核心任务:

1)请求对象的处理:请求解析模块

2)请求过程的处理:三大认证模块 => 自己代码完成处理

3)请求结果的响应:异常模块处理异常响应 | 响应渲染模块处理正常响应

请求解析模块

1)二次封装了原生Django的wsgi协议的request对象,并做了向下兼容(原来request对象的内容,用现在的request对象都能访问)

2)将所有拼接参数都放在request.query_params中,将所有数据包参数都放在request.data

3)路由的有名无名分组的数据还是保存在args和kwargs中

# 解析模块可以在settings.py自定义解析配置
REST_FRAMEWORK = {
    # 解析模块
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',  # json
        'rest_framework.parsers.FormParser',  # urlencoded
        'rest_framework.parsers.MultiPartParser'  # form-data
    ],
    # 渲染模块
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',  # 上线后会注释
    ],
}

响应渲染模块

1)当三大认证模块和自己处理请求的视图逻辑没有出现异常时,会执行响应渲染模块

2)响应的数据会交给渲染模块来完成数据的渲染,渲染方式有两种:Json格式数据渲染、Brower格式数据渲染

# 渲染模块可以在settings.py自定义解析配置
REST_FRAMEWORK = {
    # 渲染模块
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',  # 渲染json数据类型
        # 浏览器渲染,上线后会注释,不然浏览器请求接口就暴露了后台语言
        'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览器渲染
    ],
}

04 APIView的请求生命周期

原文:https://www.cnblogs.com/cnhyk/p/12458816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!