请求-Django REST框架request.py

请求-Django REST框架

request.py

请求

如果你在做基于休息的网络服务.你应该忽略请求。

Malcom TredinnickDjango开发商组

REST框架Request类扩展标准。HttpRequest添加对REST框架的灵活请求解析和请求身份验证的支持。


请求解析

REST框架的请求对象提供灵活的请求解析,允许您使用JSON数据或其他媒体类型处理请求,其方式与通常处理表单数据的方式相同。

.数据

request.data返回请求主体的解析内容。这与标准类似。request.POSTrequest.FILES属性除外:

  • 它包括所有已解析的内容,包括文件和非文件投入。
  • 它支持解析除HTTP之外的HTTP方法的内容POST,这意味着您可以访问PUTPATCH请求。
  • 它支持REST框架灵活的请求解析,而不仅仅是支持表单数据。例如,您可以以处理传入表单数据的方式处理传入的JSON数据。

有关详细信息,请参阅解析器文档.

.query_params

request.query_params的同义词。request.GET.

为了代码中的清晰性,我们建议使用request.query_params而不是Django的标准request.GET...这样做将有助于使您的代码库更加正确和明显--任何HTTP方法类型都可能包含查询参数,而不仅仅是GET请求。

解析器

这个APIView类或@api_view装饰器将确保此属性自动设置为Parser实例,基于parser_classes设置为视图或基于DEFAULT_PARSER_CLASSES背景。

您通常不需要访问此属性。


注:如果客户端发送格式错误的内容,则访问request.data可能引发ParseError...默认情况下REST框架的APIView类或@api_view装饰器将捕获错误并返回400 Bad Request回应。

如果客户端发送的请求具有无法解析的内容类型,则UnsupportedMediaType异常将引发,默认情况下该异常将被捕获并返回415 Unsupported Media Type回应。


内容协商

请求公开一些允许您确定内容协商阶段结果的属性。这允许您实现行为,例如为不同的媒体类型选择不同的序列化方案。

接受渲染器

内容协商阶段选择的呈现器实例。

接受媒体类型

表示内容协商阶段接受的媒体类型的字符串。


认证

REST框架提供灵活的、按请求进行的身份验证,使您能够:

  • 对API的不同部分使用不同的身份验证策略。
  • 支持使用多个身份验证策略。
  • 提供与传入请求相关联的用户和令牌信息。

.用户

request.user的实例。django.contrib.auth.models.User,尽管行为取决于所使用的身份验证策略。

如果请求未经身份验证,则默认值为request.userdjango.contrib.auth.models.AnonymousUser.

有关详细信息,请参阅认证文件.

.奥斯

request.auth返回任何其他身份验证上下文。确切的行为request.auth取决于所使用的身份验证策略,但通常它可能是对请求进行身份验证的令牌的实例。

如果请求未经身份验证,或者如果没有其他上下文,则默认值为request.authNone.

有关详细信息,请参阅认证文件.

.认证者

这个APIView类或@api_view装饰器将确保此属性自动设置为认证实例,基于authentication_classes设置为视图或基于DEFAULT_AUTHENTICATORS背景。

您通常不需要访问此属性。


注:你可能会看到WrappedAttributeError调用.用户.奥斯财产。这些错误起源于作为标准的身份验证器。AttributeError但是,有必要将它们作为不同的异常类型重新引发,以防止它们被外部属性访问所抑制。Python不会意识到AttributeError起源于身份验证器,并将相反地假设请求对象没有.用户.奥斯财产。认证者需要被修复。


浏览器增强

REST框架支持一些浏览器增强功能,例如基于浏览器的增强。PUT, PATCHDELETE表格。

.方法

request.method返回超感知请求的HTTP方法的字符串表示形式。

基于浏览器的PUT, PATCHDELETE表单被透明地支持。

有关更多信息,请参见浏览器增强文档.

内容类型

request.content_type,返回一个表示HTTP请求正文的媒体类型的String对象,或者如果没有提供媒体类型,则返回一个空字符串。

您通常不需要直接访问请求的内容类型,因为通常您将依赖REST框架的默认请求解析行为。

如果确实需要访问请求的内容类型,则应使用内容类型属性优先于使用request.META.get('HTTP_CONTENT_TYPE'),因为它为基于浏览器的非表单内容提供了透明的支持。

有关更多信息,请参见浏览器增强文档.

溪流

request.stream返回表示请求主体的内容的流。

您通常不需要直接访问请求的内容,因为通常您将依赖REST框架的默认请求解析行为。


标准HttpRequest属性

作为REST框架的Request扩展Django‘sHttpRequest,所有其他标准属性和方法也是可用的。例如,request.METArequest.session字典可以正常使用。

注意,由于实现原因,Request类不继承HttpRequest类,而是使用组合扩展类。

你可能感兴趣的:(请求-Django REST框架request.py)