zoukankan      html  css  js  c++  java
  • restframework-总结

    1. 规范
            - 版本控制
            - 部署专用的域名(防止跨域攻击)
            - 因为restframework又称为面向资源的编程所以url名词需要用专业的名词去表示
            - 请求方式method
            - url上可以传递搜索条件
            - 有状态码
            - 错误处理
            - 返回结果:针对不同的操作,返回的数据不同
        2. django rest framework 框架
            - dispatch
                - 请求封装
                - 处理版本
                - 认证
                - 权限
                - 限制访问频率
            - 认证
                - 编写类
                    def auth...():
                    - 返回结果:
                        - None
                        - (user,auth)
                        - raise APIException(...)
                - 应用
                    - 单独视图
                    - 全局
                    
            - 面向对象:
                - 封装
                - 继承
        1. 认证,检查用户是否存在;如果存在request.user/request.auth;不存在request.user/request.auth=None
        2. 权限,
                request.user/request.auth 
                True/False
        
            PS: has_object_permission
            
        3. 访问频率
            a. 对匿名用户进行限制:每个用户1分钟允许访问10次
            
            b. 对匿名用户进行限制 每个用户1分钟允许访问5次,登录用户1分钟允许访问10次,VIP1分钟允许访问20次
        
        
        
        4. 总结:
            认证
                - 类:authenticate/authenticate_header
                - 返回值:None,(user,auth),异常
                - 配置:
                    - 视图:
                        class IndexView(APIView):
                            authentication_classes = [MyAuthentication,]
                    - 全局:
                        REST_FRAMEWORK = {
                                'UNAUTHENTICATED_USER': None,
                                'UNAUTHENTICATED_TOKEN': None,
                                "DEFAULT_AUTHENTICATION_CLASSES": [
                                    # "app02.utils.MyAuthentication",
                                ],
                        }
    
            权限 
                - 类:has_permission/has_object_permission
                - 返回值: True、False、exceptions.PermissionDenied(detail="错误信息")
                - 配置:
                    - 视图:
                        class IndexView(APIView):
                            permission_classes = [MyPermission,]
                    - 全局:
                        REST_FRAMEWORK = {
                                "DEFAULT_PERMISSION_CLASSES": [
                                    # "app02.utils.MyAuthentication",
                                ],
                        }
            限流
                - 类:allow_request/wait PS: scope = "wdp_user"
                - 返回值:True、False
                - 配置: 
                        - 视图: 
                            class IndexView(APIView):
                                
                                throttle_classes=[AnonThrottle,UserThrottle,]
                                def get(self,request,*args,**kwargs):
                                    self.dispatch
                                    return Response('访问首页')
                        - 全局
                            REST_FRAMEWORK = {
                                "DEFAULT_THROTTLE_CLASSES":[
                                
                                ],
                                'DEFAULT_THROTTLE_RATES':{
                                    'wdp_anon':'5/minute',
                                    'wdp_user':'10/minute',
                                }
                            }
                
  • 相关阅读:
    FastDFS 与 Nginx 实现分布式图片服务器
    git(三) 使用github
    html表单笔记
    Jquery笔记和ajax笔记
    CSS笔记
    javascript笔记
    idea笔记
    spring boot 框架设计步骤
    spring boot启动项的问题
    Loading class `com.mysql.jdbc.Driver'. The new driver class is `com.mysql.cj.jdb 问题
  • 原文地址:https://www.cnblogs.com/52-qq/p/8423924.html
Copyright © 2011-2022 走看看