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 自动设置

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...