基础
.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