155. RESTframe的请求和响应
创始人
2024-03-16 03:45:13
0次

1.请求和响应

在这里插入图片描述

REST framework引入了2个新的对象:Request和Response

1.1 Request

包结构:rest_framework.request.Request
该对象扩展了常规的HttpRequest ,增加了对REST框架灵活的请求解析和请求认证的支持
主要属性:

  • data
    这个属性类似django的request的POST和FILES属性:
    • django的request.POST:只能获取POST请求的form表单数据
    • rest_framework的request.data:
      • 包括所有已解析的内容,包括文件和非文件输入
      • 支持’POST’, ‘PUT’ 和’PATCH’ 方法
      • 支持REST框架的灵活请求解析,而不仅仅支持表单数据。例如,可以传入JSON数据
  • query_params
    就是标准的request.GET属性,不过从命名角度来说,更加合理,因为不是只有GET请求才有GET查询参数
  • parsers
    一般不需要访问
    在视图中应用 APIView类或@api_view装饰(装饰视图函数)将确保这个属性被自动设置
    注意事项
  1. 如果客户端发送格式错误的内容,则访问request.data可能会引发错误ParseError。默认情况下,REST框架的APIView类或@api_view装饰器将捕获错误并返回400 Bad Request响应。
  2. 如果客户端发送的请求具有无法解析的内容类型,UnsupportedMediaType则会引发异常,
    默认情况下将捕获该异常并返回415 Unsupported Media Type响应

1.2 Response

包结构:rest_framework.response.Response该类是Django的 SimpleTemplateResponse 的子类,使用python原始对象进行数据初始化,然后,REST框架使用标准HTTP内容协商来确定它应如何呈现最终的响应内容
初始化: Response(data, status=None, template_name=None,headers=None, content_type=None)

  • data :响应的序列化数据,如果是复杂对象,如模型实例,需要在传入之前序列化为原始数据类型(如dict等)
  • status :响应的状态代码,默认为200
  • template_name : HTMLRenderer 选择时使用的模板名称
  • headers :要在响应中使用的HTTP标头的字典
  • content_type :响应的内容类型。通常,这将由内容协商确定的渲染器自动设置,但在某些情况下您可能需要明确指定内容类型

属性:

  • data:响应的未呈现的序列化数据
  • status_code:响应状态码,建议使用HTTP_200_OK 这样的常量,而不是 200 这样的数字,常量给每个状态代码提供更明确
    的标识符
    更详细的见:https://www.django-rest-framework.org/api-guide/status-codes/
  • content:渲染后的响应内容,调用此属性前需要调用.render()方法渲染
  • template_name:指定的模板名
  • accepted_renderer:用于渲染响应内容的渲染器实例,在视图返回响应之前由 APIView 或 @api_view 自动设置
  • accepted_media_type:内容协商选择的媒体类型,在视图返回响应之前由 APIView 或 @api_view 自动设置
  • renderer_context:需要渲染的上下文字典对象,在视图返回响应之前由 APIView 或 @api_view 自动设置

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...