rest framework Request
要求
如果你正在做基于REST的Web服务的东西......你应该忽略request.POST。
-马尔科姆Tredinnick,Django开发组
REST框架的Request类继承了标准HttpRequest的REST架构灵活的请求解析和请求认证,加入支持。
请求解析
REST框架的请求对象提供灵活的请求的解析,可以让你以同样的方式,你通常会处理表单数据和JSON数据或其他媒体的治疗请求。
。数据
request.data返回请求主体的被分析的内容。这是类似的标准request.POST和request.FILES不同的是属性:
- 它包括所有分析的内容,包括文件和非文件输入。
- 它支持解析的比其他的HTTP方法的内容
POST,这意味着您可以访问的内容PUT和PATCH要求。 - 它支持REST架构灵活的请求解析,而不仅仅是支持表单数据。例如,您可以以同样的方式,你处理传入的表格数据处理传入的JSON数据。
欲了解更多详细信息,请参阅解析器文档。
.query_params
request.query_params是更多的正确命名的代名词request.GET。
为了您的代码中清楚起见,我们建议使用request.query_params,而不是Django的标准request.GET。这样做将有助于保持你的代码更正确,更明显的-任何HTTP方法类型可包括查询参数,而不只是GET请求。
.parsers
在APIView类或@api_view装饰将确保这个属性被自动设置为列表Parser实例的基础上,parser_classes对视图设置或基于该DEFAULT_PARSER_CLASSES设置。
你通常不会需要访问这个属性。
注:如果客户端发送格式不正确的内容,然后访问request.data可能会产生一种ParseError。默认情况下,REST框架的APIView类或@api_view装饰将捕获错误并返回一个400 Bad Request响应。
如果客户端发送与内容类型,它不能被解析那么的请求UnsupportedMediaType,将引发异常,默认情况下将被捕获并返回一个415 Unsupported Media Type响应。
内容协商
请求暴露出一些属性,使您能够确定内容协商阶段的结果。这可以让你实现的行为,如选择不同的媒体类型不同的序列化方案。
.accepted_renderer
这是由内容协商阶段选择的渲染器实例。
.accepted_media_type
表示是由内容协商阶段接受了媒体类型的字符串。
认证
REST框架提供了灵活的,每个请求验证,让您能够:
- 您的API的不同部分使用不同的身份验证策略。
- 支持使用多个认证策略。
- 提供用户和与进入请求关联令牌信息。
。用户
request.user通常返回的实例django.contrib.auth.models.User,虽然行为取决于所使用的认证策略。
如果请求是未经验证的默认值request.user是一个实例django.contrib.auth.models.AnonymousUser。
欲了解更多详细信息,请参阅验证文档。
.auth
request.auth返回任何额外的认证环境。的确切行为request.auth取决于所使用的认证策略,但它通常可以为令牌,该请求针对认证的一个实例。
如果该请求是未认证的,或者如果没有附加上下文存在时,默认值request.auth是None。
欲了解更多详细信息,请参阅验证文档。
.authenticators
在APIView类或@api_view装饰将确保这个属性被自动设置为列表Authentication实例的基础上,authentication_classes对视图设置或基于该DEFAULT_AUTHENTICATORS设置。
你通常不会需要访问这个属性。
注意:您可能会看到一个WrappedAttributeError调用时提出.user或.auth属性。这些错误来自认证为标准起源AttributeError,然而,他们是为了防止它们被外部属性访问被抑制再提出一个不同的异常类型是必要的。Python将无法识别AttributeError来自认证起源而会认为请求对象不具有.user或.auth财产。该认证将需要修复。
浏览器增强功能
REST框架支持的几个浏览器增强功能,例如基于浏览器的PUT,PATCH和DELETE形式。
。方法
request.method返回大写的请求的HTTP方法的字符串表示。
基于浏览器的PUT,PATCH而DELETE形式是透明的支持。
欲了解更多信息,请参阅浏览器的增强文档。
。内容类型
request.content_type,返回表示如果未提供媒体类型的HTTP请求的身体,或空字符串的媒体类型的字符串对象。
你不会通常需要直接访问请求的内容类型,因为你通常依靠REST框架的默认请求解析行为。
如果你确实需要访问的内容类型的请求,你应该使用.content_type属性优先使用request.META.get('HTTP_CONTENT_TYPE'),因为它提供了基于浏览器的无形式的内容透明的支持。
欲了解更多信息,请参阅浏览器的增强文档。
。流
request.stream 返回表示请求主体的内容流。
你不会通常需要直接访问请求的内容,你会通常依靠REST框架的默认请求解析行为。
标准的HttpRequest属性
由于REST架构的Request扩展Django的HttpRequest,所有其他的标准属性和方法也可提供。例如,request.META和request.session词典可为正常。
需要注意的是,由于执行的原因Request类不继承HttpRequest类,而是扩展使用组成的类。
rest framework Request的更多相关文章
- Asp.net MVC十问十答[译]
1. Explain MVC (Model-View-Controller) in general? MVC (Model-View-Controller) is an architectural s ...
- Python调用微博API
上头叫通过微博ID获取用户公布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完成后,不须要提交审核, ...
- 请求服务(RequestService)
一个module中的web组件,负责将Service的结果按照适当的规范输出给前端.格式:http://server/moduleID/param0/param1/paramN/p.TYPE格式上包含 ...
- .NET CORE 2.0之 httpcontext
HttpContext 在之前的.NET framework 是一个非常常用且强大的类,在.NET CORE2.0中要像以前用是不太方便的了, 要是用sesson 首先需要在startup 的Con ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)
上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...
- python+request+robot framework接口自动化测试
python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...
- How To Get Log, Trace Files In OA Framework Pages And Concurrent Request Programs
Goal Solution References APPLIES TO: Oracle Supplier Lifecycle Management - Version 12.1.2 and l ...
- Django Rest framework基础使用之Request/Response
1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpReque ...
随机推荐
- PHP的常用函数 持续更新
PHP的常用函数 前言: 由于害怕遗忘,故在此记录下常用的php函数,以便复习 1 define函数 作用:定义常量 用法 <?php define('a',100); ?> 2 intv ...
- 力扣567.字符串的排列—C语言实现
题目 来源:力扣(LeetCode)
- K8S(05)核心插件-ingress(服务暴露)控制器-traefik
K8S核心插件-ingress(服务暴露)控制器-traefik 1 K8S两种服务暴露方法 前面通过coredns在k8s集群内部做了serviceNAME和serviceIP之间的自动映射,使得不 ...
- Leetcode(106)-从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7 ...
- H.264视频压缩标准
H.264 这部分一直在讲,但是却没有系统的来说.接下来要详细. 参看:H.264视频压缩标准 一.简介 H.264是最新的视频压缩标准,它也称为MPEG-4 Part 10或AVC(高级视频编码). ...
- JVM进阶篇
class Person { private String name = "Jack"; private int age; private final double salar ...
- Gym 100796B Wet Boxes(思维)题解
题意:给一个如图坐标系,每个方形都放在下面两个中间,已知一个木块湿了那么他下面所有的都会湿,显然,不能湿两次.问,每次给出一个坐标,把他弄湿,有几个木块从干变成湿了. 思路:我们把坐标系拉直,就变成了 ...
- Linux 驱动框架---linux 设备
Linux 设备 Linux驱动中的三大主要基础成员主要是设备,总线和驱动.今天先来从设备开始分析先把设备相关的数据结构放到这里方便后面看到来查,其中有些进行了简单的注释. struct device ...
- μC/OS-III---I笔记9---任务等待多个内核对象和任务内建信号量与消息队列
在一个任务等待多个内核对象在之前,信号量和消息队列的发布过程中都有等待多个内核对象判断的函数,所谓任务等待多个内核对象顾名思义就是一任务同时等待多个内核对象而被挂起,在USOC-III中一个任务等待多 ...
- LeetCode 数组分割
LeetCode 数组分割 LeetCode 数组怎么分割可以得到左右最大值的差值的最大 https://www.nowcoder.com/study/live/489/1/1 左右最值最大差 htt ...