1

我正在设计一个支持 HTTP GET 参数的 REST API。在大多数情况下,我只接受一个参数值。但是我应该如何处理重复的参数?

例如,Stack Overflow 接受一个 GET 参数tab

http://stackoverflow.com/?tab=hot
http://stackoverflow.com/?tab=featured

允许重复参数,传递两个值是正确的:

http://stackoverflow.com/?tab=hot&tab=featured

我应该怎么办?只需使用第一个值,从而默默地忽略其他值(SO 做什么)或返回一个错误,说明只允许一个值?在后一种情况下,我应该返回什么错误并返回什么状态码(可能是 409 冲突)?

4

2 回答 2

1

我同意 VKSingla 的观点,这是一个设计决定,因此在这个问题上没有正确的答案只有意见。

如果你问我,我会制作一个“严格”的 API,然后抛出一个错误(我会确保这是一个明确的错误,而不仅仅是一个对用户没有帮助的随机代码)。我更喜欢这种严格的方法,因为如果用户代码两次添加相同的参数,它可能是用户代码中某处的错误。尽早发现此错误有助于用户尽快找到错误。

如果您选择忽略其他参数,请确保用户知道此行为。例如文档'第一个之后的所有重复参数都将被忽略'。像这样未记录的“魔术行为”会使代码非常难以调试。

于 2013-05-30T09:49:45.033 回答
0

这是一个设计决定。它API是你想要它如何运作的设计。
如果选择忽略任何一个,那么问题是哪一个?
所以,这只是一个冲突。否则
您的 API 可以使用组合数据进行响应,但是对此的请求应该是这样的

https://stackoverflow.com/?tab=hot,featured

另请参阅此问题Extra Query parameters in the REST API Url

于 2013-05-15T10:57:39.090 回答