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类继承,而是使用组合扩展类。
如果你正在做基于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类继承,而是使用组合扩展类。
相关文章推荐
- Django rest framework API Guide的 Responses 翻译
- Django rest framework API Guide的 Views 翻译
- Django rest framework API Guide的 Generic views 翻译
- Django REST Framework Tutorial 5:关系与超链接API(中文版教程)by hillfree
- Django-Rest-Framework 教程: 5. 提高关联性和超链接API
- django-rest-framework指南(2):Requests and Responses
- Django REST framework笔记一之简易JsonAPI搭建(可使用)
- 使用Django rest framework api时,客户端返回结果为html标签
- django 中api使用之django-rest-framework
- Django REST framework API
- python调试django-rest-framework API的小工具--httpie
- tastypie Django REST framework API [Hello JSON]
- Django REST framework-API指南01-Requests 原创翻译
- Django 之REST framework学习5:关联性和超链接API(Relationships & Hyperlinked APIs)
- Django REST framework-API指南04-Generic views 原创翻译
- Django-rest-framework学习(二)Request与Response
- Django 之REST framework学习:Authentication认证流程源码剖析
- tastypie Django REST API developement 1)
- Vue+Django REST framework打造生鲜电商项目:学习过程之报错信息
- Django-Rest-Framework 教程: 3. 使用 class based views