• 155. RESTframe的请求和响应


    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 自动设置
  • 相关阅读:
    linux挂载数据盘后格式化添加挂点
    嵌入式TC 测试用例
    java源码系列:HashMap底层存储原理详解——1、快速开始-存储和查询数据
    再谈exception——异常抛出时会发生什么?
    [Acwing] 58周赛 4490. 染色
    基于vue和nodejs毕业设计电影购票微信小程序影院
    生信教程:使用拓扑加权探索基因组进化(2)
    职称对于建筑类行业影响有多大
    数据集 | 目录一览表
    实验笔记之——可见光通信调制驱动芯片模组
  • 原文地址:https://blog.csdn.net/m0_63953077/article/details/128161999