Django REST Framework PUT不会创建新对象吗?

时间:2019-12-04 07:40:25

标签: django http django-rest-framework

在使用PUT之类的URL向generics.RetrieveUpdateDestroyAPIView发送site.com/demos/:id请求时,其中id与数据库中任何现有对象都不匹配,将返回404响应。但是根据RFC 7231

  

PUT方法请求创建目标资源的状态或将其替换为由请求消息有效负载中包含的表示形式定义的状态。

这是否违反RFC?

2 个答案:

答案 0 :(得分:1)

它明显违反了PUT的预期语义。在PUT上返回404没有任何意义,因为PUT不需要预先显示资源。

答案 1 :(得分:0)

通常来说,不会。我想在这里有完整的报价:

  

PUT方法要求目标资源的状态为   创建或替换为表示形式定义的状态   包含在请求消息有效负载中。给定成功的PUT   表示将建议:对该目标的后续GET   资源将导致在   200(OK)响应。 但是,不能保证

您怎么能看到只有“建议”而没有任何保证,通常遵循RFC规则是一个很好的建议(而Django大部分都是这样),请记住REST只是体系结构样式,这仍然取决于您如何实现。