部分有效负载的RESTful服务响应代码

部分有效负载的RESTful服务响应代码,rest,asp.net-web-api,http-status-codes,nancy,Rest,Asp.net Web Api,Http Status Codes,Nancy,我有一个带有两个查询参数的RESTFul服务,比如paramOne¶mtow2 可能的URL是 http://someApi/someResource?paramone=1¶mtwo=2 http://someApi/someResource?paramone=1 http://someApi/someResource?paramtwo=2 paramOne和paramtoo之间的关系是一对多。因此,使用第二条路线,结果将包含一组对象。现在,如果我们发送的参数无效,那么服务将返回

我有一个带有两个查询参数的RESTFul服务,比如
paramOne
&
paramtow2

可能的URL是

http://someApi/someResource?paramone=1¶mtwo=2

http://someApi/someResource?paramone=1

http://someApi/someResource?paramtwo=2

paramOne
paramtoo
之间的关系是一对多。因此,使用第二条路线,结果将包含一组对象。现在,如果我们发送的参数无效,那么服务将返回
400错误请求


我的问题来了。如果用户通过提供一个有效参数和另一个无效参数(如
http://someApi/someResource?paramone=1¶mtwo=invalidData
那么HTTP状态码是什么?这是一个错误的请求吗?还是基于
paramone
的对象集合?(因为paramone是有效的)

从“对你所做的[发送]保持保守,对你所接受的东西保持自由”这句话中,我希望有一个集合,而忽略无效的
Paramtwo
。而且,当涉及到
DELETE
操作时,这会删除带有
paramone
的所有对象。那么有这个可以吗,还是应该是坏的




谢谢:)

在REST中,URI应被视为原子标识符,包括查询字符串。理论上,这意味着您应该返回
404notfound
,即使应用查询字符串的基本资源存在。然而,我相信大多数API在这方面更为实用,并且基于最少惊讶的原则,倾向于对无效的querystring参数返回
400错误请求
。如果一直采用,那就好了

我认为,拒绝整个请求并明确指出错误并期望用户纠正它,比在用户可能忽略错误的情况下给出部分成功要好。如果希望请求部分成功,HTTP对此没有标准,但如果需要,可以采用
207多状态
WebDav响应