DRF框架基本组件之请求&响应
1,请求
REST framework的Request
类扩展了标准的HttpRequest
,添加对REST framework的灵活请求解析和请求身份验证的支持。
request.data :返回请求主体的解析内容,包括所有解析的内容,文件(file) 和 非文件(non-file inputs);不仅仅支持表单数据,还支持JSON数据;支持解析 POST 以外的 HTTP method ,比如 PUT,PATCH
request.query_params :等同于 request.GET;为了代码更加清晰可读,推荐使用 request.query_params
request.parsers :当前使用的解析器列表
request.user:通常会返回 django.contrib.auth.models.User 的一个实例,但其行为取决于正在使用的身份验证策略;若请求未经身份验证,则返回 django.contrib.auth.models.AnonymousUser 的实例
request.auth:返回任何附加的认证上下文(authentication context),通常可能是请求经过身份验证的令牌(token)实例
request.authenticators:当前使用的认证器(authenticator)列表
2,响应
REST framework 的 Response 类是 Django 的 SimpleTemplateResponse 的子类
构造方法: Response(data, status=None, template_name=None, headers=None, content_type=None)
data: 响应的序列化数据。
status: 响应的状态代码。默认为200。
template_name: 选择 HTMLRenderer 时使用的模板名称。
headers: 设置 HTTP header,字典类型。
content_type: 响应的内容类型,通常渲染器会根据内容协商的结果自动设置,但有些时候需要手动指定。
3,Authentication(认证)
REST framework 提供了灵活的,每次请求的验证,让你能够: 对API的不同部分使用不同的身份验证策略。 支持使用多个身份验证策略。 * 提供与传入请求相关联的用户和令牌信息。
.user
request.user
通常返回一个 django.contrib.auth.models.User
实例, 尽管该行为取决于所使用的的认证策略。
如果请求未认证则 request.user
的默认值为 django.contrib.auth.models.AnonymousUser
的一个实例。
更多详细信息请查阅 authentication documentation.
.auth
request.auth
返回任何其他身份验证上下文。 request.auth
的确切行为取决于所使用的的认证策略,但它通常可以是请求被认证的token的实例。
如果请求未认证或者没有其他上下文,则 request.auth
的默认值为 None
.
更多详细信息请查阅 authentication documentation.
.authenticators
APIView
类或 @api_view
装饰器将根据在view中设置的 authentication_classes
或基于DEFAULT_AUTHENTICATORS
设置,确保此属性自动设置为 Authentication
实例的列表。
你通常并不需要访问此属性。