• Django项目总结:Rest Framework【2】


    REST难点

     

    www.django-rest-framework.org/tutorial/1-serialization/

    【源码分析】

    模型序列化

    -- 正向序列化

      -- 将模型转换成JSON

    -- 反向序列化

      -- 将JSON转换成模型

     

    serialization

    -- 在模块serializers

      -- HyperLinkedModelSerializer

        -- 序列化模型,并添加超链接

      -- Serializer

        -- 手动序列化

     

    双R

    -- Request

      -- rest_framework.request

      -- 将Django中的Request作为了自己的一个属性 _request

      -- 属性和方法

        -- content_type

        -- stream

        -- query_params

        -- data

          -- 同时兼容  POST,PUT,PATCH

        -- user

          -- 可以直接在请求上获取用户

          -- 相当于在请求上添加一个属性,用户对象

        -- auth

          -- 认证

          -- 相当于请求上添加了一个属性,属性值是token

        -- successful_authenticator

          -- 认证成功

    -- Response

      -- 依然是HttpResponse的子类

      -- 自己封装的

        -- data 直接接受字典转换成JSON

        -- status  状态码

      -- 属性和方法

        -- rendered_content

        -- status_text

     

    APIView

    -- renderer_classes

      -- 渲染的类

    -- parser_classes

      -- 解析转换的类

    -- authentication_classes

      -- 认证的类

    -- throttle_classes

      -- 节流的类

      -- 控制请求频率的

    -- permission_classes

      -- 权限的类

    -- content_negotiation_class

      -- 内容过滤类

    -- metadata_class

      -- 元信息的类

    -- versioning_class

      -- 版本控制的类

    -- as_view()

      -- 调用父类中的as_view -> dispatch

        -- dispatch被重写(调用的是APIView中的dispatch)

        -- initialize_request

          -- 使用django的request构建了一个REST中的Request

          -- REST重写了request,并将django的request保存在_request

        -- initial

          -- perform_authentication

            -- @property 将方法修改为属性

            -- 执行用户认证

            -- 遍历我们的认证器

              -- 如果认证成功会返回一个元组

              -- 元组中的第一个元素就是 user

              -- 第二个元素就是 auth,token

          -- check_permissions

            -- 检查权限

            -- 遍历我们的权限检测器

              -- 只要有一个权限检测没通过

              -- 就直接显示权限被拒绝

              -- 所有权限都满足,才算是拥有权限

          -- check_throttles

            -- 检测频率

            -- 遍历频率限制器

              -- 如果验证不通过,就需要等待

        -- csrf_exempt

          -- 所有APIView的子类都是csrf豁免的

     

    错误码

    -- 封装 status模块中

    -- 实际上就是一个常量类

     

    针对视图函数的包装

    -- CBV

      -- APIView

    -- FBV

      -- 添加 @api_view装饰器

      -- 必须手动指定允许的请求方法

     

  • 相关阅读:
    阿里云nginx创建多站点
    linux 卸载php mysql apache
    centos php环境搭建
    jquery simple modal
    nodejs 安装express
    nodejs fs.open
    nodejs supervisor
    nodejs 运行
    nodejs shell
    PHP array_pad()
  • 原文地址:https://www.cnblogs.com/dc2019/p/13455966.html
Copyright © 2020-2023  润新知