1 1. 规范 2 - 版本控制 3 - 部署专用的域名(防止跨域攻击) 4 - 因为restframework又称为面向资源的编程所以url名词需要用专业的名词去表示 5 - 请求方式method 6 - url上可以传递搜索条件 7 - 有状态码 8 - 错误处理 9 - 返回结果:针对不同的操作,返回的数据不同 10 2. django rest framework 框架 11 - dispatch 12 - 请求封装 13 - 处理版本 14 - 认证 15 - 权限 16 - 限制访问频率 17 - 认证 18 - 编写类 19 def auth...(): 20 - 返回结果: 21 - None 22 - (user,auth) 23 - raise APIException(...) 24 - 应用 25 - 单独视图 26 - 全局 27 28 - 面向对象: 29 - 封装 30 - 继承
1 1. 认证,检查用户是否存在;如果存在request.user/request.auth;不存在request.user/request.auth=None 2 2. 权限, 3 request.user/request.auth 4 True/False 5 6 PS: has_object_permission 7 8 3. 访问频率 9 a. 对匿名用户进行限制:每个用户1分钟允许访问10次 10 11 b. 对匿名用户进行限制 每个用户1分钟允许访问5次,登录用户1分钟允许访问10次,VIP1分钟允许访问20次 12 13 14 15 4. 总结: 16 认证 17 - 类:authenticate/authenticate_header 18 - 返回值:None,(user,auth),异常 19 - 配置: 20 - 视图: 21 class IndexView(APIView): 22 authentication_classes = [MyAuthentication,] 23 - 全局: 24 REST_FRAMEWORK = { 25 'UNAUTHENTICATED_USER': None, 26 'UNAUTHENTICATED_TOKEN': None, 27 "DEFAULT_AUTHENTICATION_CLASSES": [ 28 # "app02.utils.MyAuthentication", 29 ], 30 } 31 32 权限 33 - 类:has_permission/has_object_permission 34 - 返回值: True、False、exceptions.PermissionDenied(detail="错误信息") 35 - 配置: 36 - 视图: 37 class IndexView(APIView): 38 permission_classes = [MyPermission,] 39 - 全局: 40 REST_FRAMEWORK = { 41 "DEFAULT_PERMISSION_CLASSES": [ 42 # "app02.utils.MyAuthentication", 43 ], 44 } 45 限流 46 - 类:allow_request/wait PS: scope = "wdp_user" 47 - 返回值:True、False 48 - 配置: 49 - 视图: 50 class IndexView(APIView): 51 52 throttle_classes=[AnonThrottle,UserThrottle,] 53 def get(self,request,*args,**kwargs): 54 self.dispatch 55 return Response('访问首页') 56 - 全局 57 REST_FRAMEWORK = { 58 "DEFAULT_THROTTLE_CLASSES":[ 59 60 ], 61 'DEFAULT_THROTTLE_RATES':{ 62 'wdp_anon':'5/minute', 63 'wdp_user':'10/minute', 64 } 65 }