zoukankan      html  css  js  c++  java
  • 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',  # 浏览器渲染
        ],
    }
    
  • 相关阅读:
    Redis 数据结构之dict
    分布式一致性算法——paxos
    分布式事务、两阶段提交协议、三阶提交协议
    MySQL主从数据同步延时分析
    MySQL数据丢失情况分析
    INSERT ... ON DUPLICATE KEY UPDATE Syntax
    分布式系统的数据一致性
    分布式系统的BASE理论
    分布式系统的CAP理论
    性能指标体系构建
  • 原文地址:https://www.cnblogs.com/cnhyk/p/12458816.html
Copyright © 2011-2022 走看看