您的位置:首页 > 产品设计 > UI/UE

Django rest framework API Guide的 Requests 翻译

2017-09-26 08:18 645 查看
Requests 请求
如果你正在做基于rest的web服务。你应该忽略request.POST。

----Django,Django的开发团队
REST framewrok的 Request类继承了HttpRequest的标准,为REST框架的灵活请求解析和请求验证添加支持。

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

.data 数据
request.data 返回请求主体的解析内容。这与标准request.POST和request.FILES属性相似,除了:
1 request.data 包括所有已解析的内容,包括文件和非文件输入。
2 request.data 支持解析除POST之外的HTTP方法的内容,这意味着您可以访问PUT和PATCH请求的内容。
3 request.data 支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以处理传入的JSON数据,就像处理传入的表单数据一样。
要了解更多细节,请参阅parsers documentation

.query_params 查询参数
request.query_params是一个更正确的命名对于request.get来说。
为了清晰地了解代码,我们建议使用request.query_params而不是Django的request.GET。这样做可以帮助您的代码库更加正确和明显(任何HTTP方法类型都可能包括查询参数,而不仅仅是GET请求。

.parsers 解析器
APIView类或@APIView修饰器将确保该属性被自动设置为Parse实例的列表,基于视图上的parser_class,或者基于DEFAULT_PARSER_CLASSES设置。
您通常不需要访问该属性。

注意:如果客户端发送错误的内容,然后访问request.data可能会引发一个ParseError。默认REST框架的APIView类或@APIView装饰器将捕获错误,并返回400Bad Request响应。
如果客户端发送了一个无法解析的内容类型的请求,那么将会出现一个UnsupportedMediaType异常,默认情况下将会捕获并返回415Unsupported Media Type响应。

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

.accepted_renderer 接受的渲染器
呈现程序实例由内容协商阶段所选择的内容。

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

Authentication 身份验证
REST框架提供了灵活的、每个请求的身份验证,这使您有能力:
1 对API的不同部分使用不同的身份验证策略。
2 支持多种身份验证策略的使用。
3 提供与传入请求相关联的 用户和token信息。

.user 用户
request.user通常返回django.contrib.auth.models.user的实例,尽管行为取决于使用的身份验证策略。
如果请求未经过身份验证,则request.user的缺省值是一个django.contrib.auth.models.AnonymousUser的实例。
有关更多详细信息,请参阅authentication documentation

.auth 认证
request.auth 返回任何附加的身份验证上下文。request.auth具体行为依赖于使用的身份验证策略,但它通常是令请求进行身份验证的令牌的一个实例。
如果请求是未经身份验证的,或者如果没有附加的上下文,则request.auth的缺省值是None。
有关更多详细信息,请参阅authentication documentation

.authenticators 认证器
APIView类或@APIView修饰器将确保该属性被自动设置为基于视图上的authentication_classes或基于DEFAULT_AUTHENTICATORS设置的认证实例列表。
您通常不需要访问该属性。

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

.method 方法
request.method返回请求的HTTP方法的以大写字母字符串表示。
基于浏览器的PUT、PATCH和DELETE表单都是透明支持的。
要了解更多的信息,请参阅browser enhancements
documentation。

.content_type 内容类型
request.content_type返回一个字符串对象,该对象表示HTTP请求主体的媒体类型,如果没有提供媒体类型,则返回一个空字符串。
您通常不需要直接访问请求的内容类型,因为您通常需要依赖REST框架的默认请求解析行为。
如果需要访问请求的内容类型,则应该优先使用.content_type属性,然后才是使用request.META.get('HTTP_CONTENT_TYPE'),因为它为基于浏览器的非表单内容提供了透明的支持。
要了解更多的信息,请参阅browser enhancements
documentation。

.stream 流
request.stream 返回代表请求主体内容的流。
您通常不需要直接访问请求的内容,因为您通常会依赖REST框架的默认请求解析行为。

Standard HttpRequest attributes 标准Http请求属性
随着REST框架的Request扩展了Django的HttpRequest,其他所有的标准属性和方法也都可用。例如request.META和request.session是和往常一样可以调用。
注意,由于实现原因,Request类不从HttpRequest类继承,而是使用组合扩展类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: