• 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',
                                }
                            }
                
  • 相关阅读:
    PHP 如何安全的使用 MySQL ?
    IntelliJ IDEA 内存优化最佳实践
    当我们在谈论 DevOps,我们在谈论什么?
    第84节:Java中的网络编程(中)
    Java工程师必备
    Java工程师必备
    第83节:Java中的学生管理系统分页功能
    第83节:Java中的学生管理系统分页功能
    第82节:Java中的学生管理系统
    第82节:Java中的学生管理系统
  • 原文地址:https://www.cnblogs.com/52-qq/p/8423924.html
Copyright © 2020-2023  润新知