• 04 APIView的请求生命周期


    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',  # 浏览器渲染
        ],
    }
    
  • 相关阅读:
    判别式模型与生成式模型
    C#和Excel进行报表开发
    C# TreeView序列化、串行化、反序列化
    磁盘碎片整理后电脑盘损坏的修复过程
    用C#实现CS模式下软件自动在线升级
    win10家庭版更改为企业版和激活
    [原创]前端页面检查神器google chrome lighthouse
    [原创] PDMReaderSetup下载
    SpringBoot定时任务@EnableScheduling
    【spring bean】@Resource注解的自动注入策略 , 以 项目中注入多个线程池的Bean为例 附加自定义SpringBeanSupport
  • 原文地址:https://www.cnblogs.com/cnhyk/p/12458816.html
Copyright © 2020-2023  润新知