2014-10-31 168 views
1

RESTful服务响应代码我有2查询参数RESTful服务,说paramOne & Paramtwo
可能的网址是的部分有效载荷

http://someApi/someResource?paramone=1&paramtwo=2
http://someApi/someResource?paramone=1
http://someApi/someResource?paramtwo=2

paramOne & Paramtwo是一对多。因此,第二条路线的结果将包含一组对象。现在,如果我们发送的参数无效,那么服务将返回400 BAD REQUEST

这是我的问题。如果用户通过提供一个有效的和其他无效的参数(如http://someApi/someResource?paramone=1&paramtwo=invalidData)来请求,那么HTTP状态代码是什么?这是一个BAD REQUEST?或者基于paramone的对象集合? (因为paramone有效)

Robustness Principle:“保守你做的[发送],在接受的内容中保持自由。”,我期待收集并忽略无效的Paramtwo。并且,当涉及到DELETE操作时,这将删除所有对象paramone。那么这样做还是应该是badrequest?



谢谢:)

回答

1

在REST的URI应被视为一个原子标识符,包括查询字符串。从理论上讲,这意味着即使查询字符串应用到的基本资源存在,您也应该返回404 Not Found。但是,我认为大多数API更加务实,并且基于最小惊讶原则,倾向于返回400 Bad Request上的无效查询字符串参数。如果这一贯被采用,那很好。

我认为最好是拒绝整个请求,并明确指出错误并期望用户纠正错误,而不是在用户可能忽略错误的情况下取得部分成功。如果您希望请求部分成功,HTTP没有这方面的标准,但如果您愿意,您可以采用207 Multi-Status WebDAV响应。

+0

+1您的回答:) – Navaneeth 2014-10-31 13:58:07