Rest-framework-API参考-Requests

Requests请求

If you're doing REST-based web service stuff ... you should ignore request.POST.

— Malcom Tredinnick,Django developers group

REST framework'sRequestclass extends the standardHttpRequest, adding support for REST framework's flexible request parsing and request authentication.

REST架构的请求类扩展了标准的HttpRequest,加入支持REST架构的灵活解析请求和请求认证。

Request parsing请求解析

REST framework's Request objects provide flexible request parsing that allows you to treat requests with JSON data or other media types in the same way that you would normally deal with form data.

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

.data

request.datareturns the parsed content of the request body. This is similar to the standardrequest.POSTandrequest.FILESattributes except that:

request.data返回解析内容请求体。这是类似于标准的request.post和request.files属性。除了:

It includes all parsed content, includingfile and non-fileinputs.

包括所有分析的内容,包括文件和非文件输入。

It supports parsing the content of HTTP methods other thanPOST, meaning that you can access the content ofPUTandPATCHrequests.

支持解析HTTP方法以外的内容后,意味着你可以访问请求的内容和补丁。

It supports REST framework's flexible request parsing, rather than just supporting form data. For example you can handle incoming JSON data in the same way that you handle incoming form data.

支持REST架构的灵活的解析请求,而不是仅仅支持表单数据。例如,您可以像传入表单数据一样处理传入的JSON数据。

For more details see theparsers documentation.

.query_params

request.query_paramsis a more correctly named synonym forrequest.GET.

For clarity inside your code, we recommend usingrequest.query_paramsinstead of the Django's standardrequest.GET. Doing so will help keep your codebase more correct and obvious - any HTTP method type may include query parameters, not justGETrequests.

request.query_params是更正确地命名为request.get同义词。

在你的代码清晰,我们建议使用request.query_params代替Django的标准request.get。这样做将有助于让你的代码更正确、明显的任何HTTP方法类型包括查询参数,不只是GET请求。

.parsers

TheAPIViewclass or@api_viewdecorator will ensure that this property is automatically set to a list ofParserinstances, based on theparser_classesset on the view or based on theDEFAULT_PARSER_CLASSESsetting.

这个APIView类或@api_view装饰将确保此属性自动设置为列表解析器实例,基于parser_classes视图上设置或基于DEFAULT_PARSER_CLASSES设置。

You won't typically need to access this property.

Note:If a client sends malformed content, then accessingrequest.datamay raise aParseError. By default REST framework'sAPIViewclass or@api_viewdecorator will catch the error and return a400 Bad Requestresponse.

If a client sends a request with a content-type that cannot be parsed then aUnsupportedMediaTypeexception will be raised, which by default will be caught and return a415 Unsupported Media Typeresponse.

注意:如果一个客户端发送格式不正确的内容,然后访问request.data可能引起错误分析。默认情况下,REST的apiview框架类或@api_view装饰将捕获错误,并返回一个400错误的请求的响应。

如果一个客户端发送一个内容类型,不能被解析并unsupportedmediatype将引发异常的请求,默认情况下会被抓到并返回一个415响应不支持的媒体类型。

Content negotiation

The request exposes some properties that allow you to determine the result of the content negotiation stage. This allows you to implement behaviour such as selecting a different serialisation schemes for different media types.

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

.accepted_renderer

The renderer instance what was selected by the content negotiation stage.

.accepted_media_type

A string representing the media type that was accepted by the content negotiation stage.

Authentication

REST framework provides flexible, per-request authentication, that gives you the ability to:

Use different authentication policies for different parts of your API.

Support the use of multiple authentication policies.

Provide both user and token information associated with the incoming request.

认证

REST框架提供灵活的,每个请求认证,这给你的能力:

●使用不同的认证政策,你的API的不同部分。

●支持多种认证政策的使用。

●提供用户令牌信息与请求相关的。

.user

request.usertypically returns an instance ofdjango.contrib.auth.models.User, although the behavior depends on the authentication policy being used.

If the request is unauthenticated the default value ofrequest.useris an instance ofdjango.contrib.auth.models.AnonymousUser.

For more details see theauthentication documentation.

request.user通常返回django.contrib.auth.models.User实例,虽然行为取决于所使用的认证政策。

如果请求是未经身份验证的request.user默认值是django.contrib.auth.models.AnonymousUser实例。

有关详细信息请参见验证文档。

.auth

request.authreturns any additional authentication context. The exact behavior ofrequest.authdepends on the authentication policy being used, but it may typically be an instance of the token that the request was authenticated against.

If the request is unauthenticated, or if no additional context is present, the default value ofrequest.authisNone.

For more details see theauthentication documentation.

request.auth返回的任何额外的认证上下文。对request.auth准确的行为取决于认证策略被使用,但它可能是典型的令牌请求认证针对实例。

如果请求是未经验证的,如果没有额外的上下文是存在的,request.auth默认值是没有的。

.authenticators

TheAPIViewclass or@api_viewdecorator will ensure that this property is automatically set to a list ofAuthenticationinstances, based on theauthentication_classesset on the view or based on theDEFAULT_AUTHENTICATORSsetting.

You won't typically need to access this property.

APIView类或@api_view装饰将确保此属性自动设置为列表中的Authenticationinstances,基于authentication_classes视图上设置或基于default_authenticators设置。

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

Browser enhancements

REST framework supports a few browser enhancements such as browser-basedPUT,PATCHandDELETEforms.

REST框架支持一些浏览器增强功能,如基于浏览器的PUT,PATCH和DELETE表单。

.method

request.methodreturns theuppercasedstring representation of the request's HTTP method.

Browser-basedPUT,PATCHandDELETEforms are transparently supported.

request.method返回请求的HTTP方法的大写字母的字符串表示形式。

基于浏览器的PUT,PATCHandDELETE表单是透明支持的。

For more information see thebrowser enhancements documentation.

.content_type

request.content_type, returns a string object representing the media type of the HTTP request's body, or an empty string if no media type was provided.

You won't typically need to directly access the request's content type, as you'll normally rely on REST framework's default request parsing behavior.

If you do need to access the content type of the request you should use the.content_typeproperty in preference to usingrequest.META.get('HTTP_CONTENT_TYPE'), as it provides transparent support for browser-based non-form content.

For more information see thebrowser enhancements documentation.

request.content_type,字符串对象代表了回归的媒体类型HTTP的身体,一个空的字符串,如果没有提供媒体类型。

.stream

request.streamreturns a stream representing the content of the request body.

You won't typically need to directly access the request's content, as you'll normally rely on REST framework's default request parsing behavior.

Standard HttpRequest attributes

As REST framework'sRequestextends Django'sHttpRequest, all the other standard attributes and methods are also available. For example therequest.METAandrequest.sessiondictionaries are available as normal.

Note that due to implementation reasons theRequestclass does not inherit fromHttpRequestclass, but instead extends the class using composition.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的阅读 13,547评论 5 6
  • 儿子: 昨天你的心灵受伤了,妈妈很心疼,看得出来爸爸也心疼。昨天前天,我们作为成年人,没有控制好自己,让你无辜受到...
    芬妮80阅读 576评论 1 1
  • 打开官方网站python.org 进入下载界面,选择Windows版本 默认安装就可以了 安装完成后还需要设置环境...
    luooove阅读 14,769评论 0 3
  • 早上应孩子昨晚的要求,在6点钟就叫他起床,他答应着,睡眼惺忪、半梦半醒的穿着衣服。看着孩子这么辛苦的样子,既心疼又...
    武汉的笑靥如花阅读 297评论 1 7