Request

基础

.data 解析后的内容,和POST和FILES类似,但

获得所有方法的请求体
支持文件和非文件
支持多种数据类型 例如json

.query_params 和GET类似,但这种写法更明确
获得所有方法的查询字符串

.parsers 设置为Parser的列表,根据parser_class,一般不需要使用该属性
(如果用户输入的内容不正确则返回400 如果用户输入的媒体类型不支持则返回415)

内容协商

.accepted_renderer 用于响应的Render的实例
.accepted_media_type 用于响应的媒体类型

认证

user auth authenticators

浏览器支持

.method 大写的当前请求方法名称
.content_type 请求体的内容类型
.stream 返回一个代表请求体的流,一般不使用

源码实现

初始化

接收参数request,parsers=None,authenticators=None,negotiator=None,parser_context=None

接受的request是构建好的django的request

parser_context如果从APIView中获得则为一个包含了view args kwargs的dict
另外增加了request encoding

content_type

拿META中的

stream

通过_stream缓存

如果还没开始读取,通过django的原生request
如果已经读取过,则使用django的原生request的body
关于django的原生request,实际为WSGIRequest

本属性可能不会直接使用,在获取data时通过parse也会调用到

query_params

拿django的原生request的GET

data

调用_load_data_and_files,在其中调用_parse

user

调用_authenticate,成功后设置_authenticator user auth,失败则调用_not_authenticated,设置user为AnonymousUser auth为None

auth

见user

successful_authenticator

见user,其为_authenticator的包装

POST

见data

FILES

见data

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

推荐阅读更多精彩内容