Django REST framework-API指南01-Requests 原创翻译

python技术交流群332680349,资源分享,技术交流。

01-请求

如果您正在使用基于REST的Web服务,您应该忽略request.POST。
出自Malcom Tredinnick,Django开发团队

REST框架的Request类扩展了Django标准HttpRequest,增加了对REST框架灵活请求解析和请求认证的支持。

02-请求解析

REST框架的Request对象提供灵活的请求解析,允许您以与通常处理表单数据相同的方式处理JSON数据或其他媒体类型的请求。

数据属性(.data)

request.data返回请求正文的解析内容。这与标准request.POST和request.FILES属性相似,除以下内容:

  • 它包括所有解析的内容,包括文件和非文件输入。
  • 它支持解析HTTP方法的内容POST,这意味着您可以访问内容PUT和PATCH请求。
  • 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以以处理传入表单数据的方式处理传入的JSON数据。
    有关详细信息,请参阅解析器文档。http://www.django-rest-framework.org/api-guide/parsers/

参数查询集(.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响应。

03-内容协商

该请求公开了一些属性,允许您确定内容协商阶段的结果。这允许您实现行为,例如为不同的媒体类型选择不同的序列化方案。

接收渲染器(.accepted_renderer)

由内容协商阶段选择出来渲染器实例。

接收媒体类型(.accepted_media_type)

表示内容协商阶段接受的媒体类型的字符串。

04-身份验证

REST框架提供灵活的每个请求身份验证,使您能够:

  • 对API的不同接口使用不同的身份验证策略。
  • 支持使用多种认证策略。
  • 提供与传入请求相关联的用户和令牌信息。

用户(.user)

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设置。
通常您不需要访问此属性。

05-浏览器增强功能

REST框架支持的几个浏览器增强功能,例如基于浏览器的PUT,PATCH和DELETE形式。

方法属性(.method)

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

基于浏览器的PUT,PATCH而DELETE形式是显示的支持。

有关更多信息,请参阅浏览器增强文档。

内容类型(.content_type)

request.content_type,返回一个表示HTTP请求主体的媒体类型的字符串对象,如果没有提供媒体类型,则返回一个空字符串。

通常您通常不需要直接访问请求的内容类型,因为您通常将依赖于REST框架的默认请求解析行为。

如果您确实需要访问请求的内容类型,则应优先使用.content_type该属性优先于request.META.get(‘HTTP_CONTENT_TYPE’),因为它为基于浏览器的非表单内容提供显示支持。

有关更多信息,请参阅浏览器增强文档。

流(.stream)

request.stream 返回表示请求主体内容的流。

通常您不需要直接访问请求的内容,因为您通常将依赖于REST框架的默认请求解析行为。

06-标准的HTTP请求属性

由于REST框架Request扩展了Django HttpRequest,所有其他标准属性和方法也可用。例如request.META,request.session字典可以正常使用。

请注意,由于实现原因,Request类不会继承HttpRequest类,而是使用组合扩展类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST Framework Cache是一个Django框架的扩展,用于缓存REST API的响应数据。它提供了一种简单的方式来缓存API视图的响应,以减少数据库查询和加快请求的响应速度。 使用Django REST Framework Cache,你可以通过在视图类或视图函数上添加装饰器来启用缓存。这个扩展支持多种缓存后端,包括内存缓存、数据库缓存和文件缓存等。你可以根据你的需求选择适合的缓存后端。 为了使用Django REST Framework Cache,你需要在你的Django项目中安装并配置它。你可以通过pip安装它: ``` pip install djangorestframework-cache ``` 安装完成后,在你的项目的settings.py文件中添加以下配置: ```python INSTALLED_APPS = [ ... 'rest_framework_cache', ] CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } REST_FRAMEWORK_CACHE = { 'DEFAULT_CACHE_BACKEND': 'default', } ``` 然后,在你的API视图类或函数上使用`@cache_response`装饰器来启用缓存: ```python from rest_framework.decorators import api_view from rest_framework_cache.decorators import cache_response @api_view(['GET']) @cache_response(timeout=60*60*24) # 缓存一天 def my_view(request): ... ``` 这样,当该API被访问时,响应数据将会被缓存,并在下次请求相同的API时直接返回缓存的响应数据,而不需要执行相同的查询操作。 通过使用Django REST Framework Cache,你可以有效地提高REST API的性能和响应速度,并减少对数据库的负载。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值