美文网首页
drf 的 Request 与 Response

drf 的 Request 与 Response

作者: vckah | 来源:发表于2018-05-25 00:07 被阅读0次

    Request

    如果你正在做基于 REST 的web 服务,那么请忽略 request.POST。
    ---- Malcom Tredinnick, Django 开发组人员

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

    Request parsing

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

    .data

    request.data 返回请求主体解析后的内容。它支持多种解析格式。具体看文档

    .query_params

    主要是 GET 请求的参数
    Request 并不是继承了 Django 的 HttpRequest,而是使用组合扩展类。
    drf request 实现了 getattr() 方法:

    def __getattr__(self, attr):
        try:
            return getattr(self._request, attr)
        except AttributeError:
            return self.__getattribute__(attr)
    

    Response

    与基本的 HttpResponse 不同,TemplateResponse 对象保留了试图提供了用于计算响应的上下文的详细讯息,知道需要时才会计算出最终的响应输出,稍后再响应过程中进行计算。

    这个 Response 类是 Django 的子类SimpleTemplateResponse。Response对象使用数据进行初始化,数据应由本地Python基元组成。REST框架然后使用标准的HTTP内容协商来确定它应该如何呈现最终响应内容。
    你不一定要使用 Response 该类,如果需要,还可以从视图中返回常规 HttpResponseStreamingHttpResponse 对象。使用 Response该类只是提供了一个更好的界面,用于返回经过内容协商的 Web API 响应,可以呈现为多种格式。

    创建一个 Response

    Response
    • 用法:Response(data, status=None, template_name=None, headers=None, content_type=None)
      Response该类使用的渲染器不能本地处理复杂的数据类型,例如 Django 模型实例,因此您需要在创建 Response 对象之前将数据序列化为基本数据类型。
      您可以使用 REST 框架的 Serializer 类来执行此数据序列化,或者使用您自己的自定义序列化。
      这个 Response 类扩展了SimpleTemplateResponse,所有通常的属性和方法也可以在响应中获得。例如,您可以用标准方式在响应中设置标题:
    response = Response()
    response['Cache-Control'] = 'no-cache'
    

    相关文章

      网友评论

          本文标题:drf 的 Request 与 Response

          本文链接:https://www.haomeiwen.com/subject/aawejftx.html