restframework-总结

 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                         }

 

上一篇:django restframework 多对多的批量修改,基于逻辑删


下一篇:SQL查询语句中的 limit 与 offset 的区别