Django Restful Framework 基础 Api (二)
APIView 类
建议配合官方文档阅读
APIView
基于类的视图
REST framework 提供了一个 APIView
类,它继承于 Django 的 View
类
APIView
类与 View
类不同的地方:
- 传递给处理方法的 request 对象是 REST framework 的
Request
实例,而不是 Django 的HttpRequest
实例,两者的区别可查看另一篇博客:点我跳转 - 处理方法返回 REST framework 的
Response
,而不是 Django 的HttpResponse
。视图将管理内容协商,并在响应中设置正确的渲染器 - 任何
APIException
异常都会被捕获并进行适当的响应 - 传入的请求会进行认证,在请求分派给处理方法之前将进行适当的权限检查(可设置允许或禁止)
和 View
类相似,传入的请求被分派到适当的处理方法,如 .get() 或 .post 。此外,我们可以在类上设置许多属性
例如:
1 | from rest_framework.views import APIView |
除了基本使用之外,REST Framework 提供了各种 Mixins
和 Viewsets
,包含许多方法和属性。一次性理解会比较困难,除了多看官方文档,我找到了一个在线浏览的参照资源,包含所有的属性和方法:Classy Django REST Framework
APIView 类的常用属性
.renderer_classes
设置渲染器
.parser_classes
设置解析器
.authentication_classes
设置认证器
.permission_classes
设置权限验证器
基于方法的视图
REST framework 也允许使用基于函数的视图。它提供了一套简单的装饰器来包装你的函数视图,以确保它们接收 Request
(而不是 Django HttpRequest
)实例并允许它们返回 Response
(而不是 Django HttpResponse
),并允许你配置该请求的处理方式
@api_view()
使用方法:@api_view(method=[])
@api_view
是一个装饰器,设置视图允许响应的 HTTP 方法,使用 settings
中指定的默认渲染器,解析器,认证类等,如下:
1 | from rest_framework.decorators import api_view |
灵活使用修饰器
为了覆盖默认设置,REST framework 提供了一系列可以添加到视图中的附加装饰器。这些必须在 @api_view
装饰器下方。例如,要创建一个使用 throttle 来确保它每天只能由特定用户调用一次的视图,请使用 @throttle_classes
装饰器,传递一个 throttle 类列表:
1 | from rest_framework.decorators import api_view, throttle_classes |
可供使用的修饰器:
@renderer_classes(...)
@parser_classes(...)
@authentication_classes(...)
@throttle_classes(...)
@permission_classes(...)
结语
APIView
继承于 Django 的 View
,是 REST framework 视图的基础类,各种复杂的 Viewsets
和 Minxins
都基于此,十分有必要掌握它
以上,谢谢阅读,有帮助的可以打个赏~~