PUT URL是否真的需要指定资源

时间:2012-03-26 18:06:14

标签: http rest

阅读this page,它说:

  

... PUT请求中的URI标识请求附带的实体 - 用户代理知道预期的URI,服务器不得尝试将请求应用于其他资源。

据此我收集到,我不应该暴露一个URL,它接受PUT请求,其中URL不能唯一地标识资源。 e.g:

http://www.example.com/cars

相反,我应该在以下URL上允许PUT请求:

http://www.example.com/cars/123

但是,在PUT请求中,内容应该包含整个实体,因此可能包含某种主键(如上述URL中的123)。因此,当内容包含唯一标识符时,为PUT请求公开非唯一URL真的被认为是不好的做法吗?在我的服务中,我想要做的就是从客户端收集数据,因此接受PUT请求的RESTful服务很棒,但我真的不希望URL是唯一的(因为这意味着更多的工作来构建URL客户端)。

2 个答案:

答案 0 :(得分:3)

PUT只应在客户端确认在请求完成后确定应包含实体的结果资源时使用。

如果您只是从客户端收集数据,那么您可能应该使用POST。

答案 1 :(得分:0)

这就是为什么在REST语义中,PUT用于更新并创建您应该使用POST的任何资源。