DRF官方文档之Request

Requests

REST framework的request继承了标准的HttpRequest,并在其基础上增加了对REST framework灵活的请求解析和认证的支持。

Request parsing 请求的解析转换

REST framework的Request对象为你提供了非常灵活的解析方式,因此,你可以像通常处理表单数据一样去处理request里的JSON数据和其他媒体类型数据。

以下是具体属性说明

.data:

request.data返回的是request body里的内容经过解析后的结果。它的属性和request.POST以及request.FILE的属性基本是相同的。下面是它几点特殊的地方:

  • 它包括了所有解析之后的内容,包括文件和非文件输入
  • 它不仅可以解析request.POST的内容,还可以解析PUT和PATCH请求
  • 它支持REST framework灵活的解析方式。例如你可以像处理表单数据一样处理传入的JSON数据
.query_params

可以看做是request.GET。我们用request.query_params代替了django中的request.GET。因为任何类型的HTTP请求都会有包含query parameters,而GET只有在request.GET中才有。这样可以让我们的代码更健壮。

.parsers

这个属性会在视图中的parser_class集合或者settings设置中的DEFAULT_PARSER_CLASSES来指定。一般你只要使用APIView类或者@api_view装饰器就会自动为你加载,不需要自己设置。

注意

  1. 如果前端请求发送了一个非正常的内容,我们使用request.data时会抛出ParseError异常,APIView和@api_view都会补货这个异常然后返回一个 400 Bad Request
  2. 前端发送来的内容完全无法识别时,无法解析转换时。会返回415 Unsupported Media Type。
Authentication

REST framework提供了灵活的基于request的认证,你可以通过认证达到如下目的:

  • 对于API中不同的部分使用不同的验证策略
  • 同时使用多种验证策略
  • 对于传递过来的请求同时使用基于用户和token的认证
.user

通过认证之后,会返回django内置的User模型实例,但它具体的行为取决于你定义的认证策略。如果未通过认证,会返回一个django内置认证模块的AnonymousUser实例

.auth

通过认证之后,会返回认证时附加的内容,通常是登录的token。未通过认证或者没有附加的内容时,会返回None。

.authenticators

通常是Authentication实例的列表。由认证策略自动配置,不需要手动操作。

浏览器附属属性

REST framework支持由浏览器在请求上附加的一些属性。部分如下:

.method

request.method返回HTTP请求方法的大写字符串

.content_type

返回request.body里的数据类型。一般也不需要自己操作。

.stream

返回request.body里内容的数据流。一般不需要手动操作

标准HTTPRequest属性

REST framework的request是继承自HTTPRequest的,自然也有HTTPRequest的一些属性。例如META、session等。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值