是RESTful PUT没有数据“kosher”,还是应该使用DELETE?

时间:2014-02-10 22:30:08

标签: api rest

我有一个RESTful路由,它适用于资源的数组字段,例如:

PUT /:id / mylist

当我执行PUT时,如果输入为空,则抛出错误。也就是说,如果传递一个空数组。我要求数组中至少有一个元素。因此,如果资源有一个包含9个元素的数组,并且路由被调用到PUT 3,那么这三个替换现有的9个。

但你不能传递任何元素,因为那会抹掉九个而不留下任何东西。

但是没有允许的元素 - 在我看来,允许在PUT中“清除”数组是错误的,并且只应这样做:

DELETE /:id / mylist

我错了吗?都还好吗?一个人比另一个更受欢迎吗?

1 个答案:

答案 0 :(得分:0)

我认为在列表资源上执行DELETE会推断列表不再存在,并且对URL的未来GET请求将返回404。

但是,使用空列表执行PUT会导致将来的GET请求返回200和空列表(无论如何表示)。

我想说两者都是有效的方法,它只取决于资源最自然的语义。

相关问题