Request 解析
REST framwork 的 Request
对象提供了灵活的请求解析,允许你使用 JSON data 或 其他 media types 像通常处理表单数据一样处理请求。
request.data
返回请求主题的解析内容。这跟标准的 request.POST
和 request.FILES
类似,并且还具有以下特点:
- 包括所有解析的内容,文件(file) 和 非文件(non-file inputs)。
- 支持解析
POST
以外的 HTTP method , 比如PUT
,PATCH
。 - 更加灵活,不仅仅支持表单数据,传入同样的 JSON 数据一样可以正确解析,并且不用做额外的处理(意思是前端不管提交的是表单数据,还是 JSON 数据,
.data
都能够正确解析)。
.data 具体操作,以后再说~
request.query_params
等同于 request.GET
,不过其名字更加容易理解。
为了代码更加清晰可读,推荐使用 request.query_params
,而不是 Django 中的 request.GET
,这样那够让你的代码更加明显的体现出 ----- 任何 HTTP method 类型都可能包含查询参数(query parameters),而不仅仅只是 'GET' 请求。
.parser
APIView
类或者 @api_view
装饰器将根据视图上设置的 parser_classes
或 settings
文件中的 DEFAULT_PARSER_CLASSES
设置来确保此属性(.parsers
)自动设置为 Parser
实例列表。
通常不需要关注该属性......
如果你非要看看它里面是什么,可以打印出来看看,大概长这样:
包含三个解析器 JSONParser
,FormParser
,MultiPartParser
。
注意: 如果客户端发送格式错误的内容,则访问
request.data
可能会引发ParseError
。默认情况下, REST framework 的APIView
类或者@api_view
装饰器将捕获错误并返回400 Bad Request
响应。 如果客户端发送的请求内容无法解析(不同于格式错误),则会引发UnsupportedMediaType
异常,默认情况下会被捕获并返回415 Unsupported Media Type
响应。