zoukankan      html  css  js  c++  java
  • DRF总结

    目录 

    1.接口

    2.DRF入门

    3.序列化组件

    4.三大认证

    5.群查过滤组件

     

    接口

    """
    1、什么是接口:url+请求参数+响应数据 | 接口文档
    
    2、接口规范:
        url:https,api,资源(名词复数),v1,get|post表示操作资源的方式,?过滤条件
        响应数据:status,msg,results|data,url资源数据
    """

    DRF入门

    1.封装风格

    2.请求生命周期

    走APIView的as_view => view的as_view调用

    APIView的dispatch => 分发给视图类的请求函数 => 响应

    3.请求模块:二次封装request

    4.解析模块:局部全局配置

    5.渲染模块:局部全局配置

    6.响应模块:

    7.异常模块:

    在请求生命周期中,分发请求任务执行时,被一个超大的try except包裹,一旦出现任何异常,都会交给exception_handler函数处理
    自定义原因:系统只处理了部分,所以手动还需要处理;后期异常信息需要记录到日志文件
    工作流程:先交给drf处理异常,如果有响应结果,代表drf已处理,如果是None,自己处理

    8.二次封装Respomse

    i) 继承Response
    ii) 自定义参数格式化成data,传给 super().__init__(data=data)
    iii) 网络状态码、响应头等信息带给super().__init__()

    序列化组件

    # 1)可以将model对象序列化成可以返回给前台的json数据
    # 2)可以校验前台传来的数据,完成model的增与改

    三大组件

    """
    1、认证组件:
        i)自定义认证类继承BaseAuthentication,重写authenticate方法
        ii)规则:游客返回None,非法用户抛异常,合法用户返回(user, auth)
        iii)全局局部配置
        
    2、权限组件:
        i)自定义权限类继承BasePermission,重写has_permission方法
        ii)规则:有权限返回True,无权限返回False - 校验对象:request.user或请求方式
        iii)全局局部配置
        
    3、频率组件:
        i)自定义频率类继承SimpleRateThrottle,重写get_cache_key方法,设置scope类属性
        ii)全局配置scope对应的访问频率:次数/时间
        iii)get_cache_key返回的是与限制条件有关的动态字符串 - 限制条件来源于请求参数或请求头
        iv)全局局部配置
        
    4、jwt认证:
        i)客户端存token,服务器存签发算法、校验算法、秘钥
        ii)基本信息(头base64).用户信息过期时间(载荷base64).全信息+秘钥(签名HS256)
        iii)drf-jwt组件使用
        iv)登录接口签发token
        v)认证组件校验token
    """

    群查过滤组件

    """
    1、搜索组件:search_fields = ['name', 'price']
    
    2、排序组件:ordering_fields = ['pk', 'price']
    
    3、分页组件:pagination_class = pagenations.MyPageNumberPagination
    
    4、django-filter过滤插件:filter_class = CarFilterSet
    
    5、自定义过滤器:自定义过滤类实现filter_queryset即可,根据筛选条件筛选后再返回queryset即可
    
    使用:
    i)视图类添加过滤类:filter_backends = [SearchFilter, OrderingFilter, LimitFilter, DjangoFilterBackend]
    ii)为不同的过滤类配置过滤条件
    """
  • 相关阅读:
    Bean生命周期
    Bean的作用域
    神经网络训练中,傻傻分不清Epoch、Batch Size和迭代
    jQuery中选择器有哪几种
    数据库的事务机制
    多线程面试题
    HTTP请求报文和HTTP响应报文
    linux tomcat单机部署多应用
    flexbox预习
    作业
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11782570.html
Copyright © 2011-2022 走看看