django 五 知识点总结 二

谈谈你对 django rest framework框架的认识?
        - 路由, 
            - 可以通过as_view传参数,根据请求方式不同执行相应的方法
            - 可以在url中设置一个结尾,类似于: .json 
        - 视图,
            - 帮助开发者提供了一些类,并在类中提供了多个方法以供我们使用。
        
        - 版本,
            - 在url中设置version参数,用户请求时候传入参数。在request.version中获取版本,根据版本不同做不同处理,请求头的accept中也可以放版本号
        
        - 认证,
            -  写一个类并注册到认证类,在类的的authticate方法中编写认证逻辑。
                - 认证成功(user,auth)
                - raise AuthticateFaild(....)
                - None 
        - 权限
            -  写一个类并注册到权限类,在类的的has_permission方法中编写认证逻辑。
                - True 
                - False 
        
        - 频率限制
            -  写一个类并注册到频率类,在类的的 allow_request/wait 方法中编写认证逻辑。
                访问频率控制原理:
            匿名:
                1.1.1.1:[时间,时间,时间,时间,]
            登录:
                user:[时间,时间,时间,时间,] 
                
                allow_request
                    - True 
                    - False  如果返回False,那么就要执行wait
                    
        - 解析器,
            - 根据ContentType请求头,选择不同解析器对 请求体中的数据进行解析。
            
                POST /index/ http1.1.\r\nhost:11.11.11.11\r\nContent-Type:url-formendo.... \r\n\r\nuser=alex&age=123
                POST /index/ http1.1.\r\nhost:11.11.11.11\r\nContent-Type:application/json\r\n\r\n{....}
            
        - 分页 
            - 对从数据库中获取到的数据进行分页处理: SQL -> limit offset 
                - 根据页码:http://www.luffycity.com/api/v1/student/?page=1&size=10
                - 根据索引:http://www.luffycity.com/api/v1/student/?offset=60&limit=10
                - 根据加密:http://www.luffycity.com/api/v1/student/?page=erd8
                
            赠送:页码越大速度越慢,为什么以及如何解决?
                  原因:页码越大向后需要扫描的行数越多,因为每次都是从0开始扫描。
                  解决:
                        - 限制显示的页数
                        - 记录当前页数据ID最大值和最小值,再次分页时,根据ID现行筛选,然后再分页。
                        
        - 序列化  
            - 对queryset序列化以及对请求数据格式校验。
            
        - 渲染器
            - 根据URL中传入的后缀,决定在数据如何渲染到到页面上。

 

posted @ 2018-06-05 22:14  liang哥哥  阅读(95)  评论(0)    收藏  举报