GET请求对多个对象的正确响应是什么,其中一个或多个对象不存在? e.g:
http://domain.net/event-list/?ids=1&ids=5&ids=3
其中id为5的对象不存在。我应该返回仅包含对象1和3的列表,还是应该返回某种错误?什么是正确的答案?
我也想知道如果请求是POST,行为应该是不同的。例如:
$.post('domain.net/events/bulk-edit/?ids=1&ids=5&ids=3', { public: true });
我应该只对存在的对象执行操作还是根本不执行操作并返回错误?
我知道如果非空的查询字符串可用于POST请求,那么会有一些争论。我认为它们对于这种特殊情况是好的,在这种情况下,您请求对象的子集对它们执行某些操作。
答案 0 :(得分:0)
好的,我给了它一些想法,这就是我认为正确的事情。
这是一个令人头疼的问题,因为您一次请求多个对象(通常是WebDAV),会带来诸如207/Multistatus
响应之类的奇迹。让我先说我认为你的查询字符串格式错误。我认为它应该是这样的:
?ids[]=1&ids[]=5&ids[]=3
现在关于GET
请求的回复。我相信以下响应代码是正确的:
ids
查询参数ids
不应转换为获取所有对象)如果您想通知客户端部分请求无法满足,您可以随时发送Warning
标题(cf RFC 2616, sec 14.46)。但是,如果你真的想要做到绝对正确,那么这里是如何处理不是每个id都有效的请求:
200/Ok
响应代码301/Moved Permanently
重定向到新网址时会发现有问题的ids
个参数关于POST
请求:我的理解是,您希望将多个事件一次性设置为公开?如果是这样,我真的会更改顺序:发送POST
到http://domain.net/events/publish
并在帖子正文中发送ID。