已创建资源的ID不在响应标头中

时间:2014-12-09 10:25:18

标签: django rest django-rest-framework

当我将新条目发布到运行Django REST Framework的端点时,响应201不包含新创建的条目id / pk。我已经读过REST服务应该包含Location标题中新资源的链接?

我怎样才能做到这一点?

我正在进行一些集成,并且希望能够立即请求新创建的资源,而不用再费力了。

1 个答案:

答案 0 :(得分:1)

根据您使用的视图类型,您可以:

  • 手动构建Response,以便它包含新创建的资源。
  • 依赖create(request, *args, **kwargs)
  • 提供的CreateModelMixin

我认为实现所需目标的最简单方法是使用CreateAPIView。根据{{​​3}},

  

如果创建了一个对象,则返回201 Created响应,其中包含   对象的序列化表示作为响应的主体。   如果表示包含名为url的键,则为Location   响应的标题将填充该值。

因此,这个通用视图肯定会返回每个响应正文中的数据,但如果您有兴趣为每个资源获取 url ,那么您应该查看{{ 3}}。这些序列化程序的工作方式基本上与ModelSerializer类似,只是它们在每个对象的表示中包含url字段,允许您浏览资源。

此外,如果您只想获取每个已创建对象的id/pk,我认为ModelSerializer默认为每个与实际{{1}对应的表示设置id字段在数据库中。不确定,但如果不是这样,你仍然可以通过指定要序列化的字段明确地要求它,即

pk