http - 如何处理冲突的 HTTP GET 参数

标签 http rest parameters get api-design

我正在设计一个支持 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 冲突)?

最佳答案

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

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

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

关于http - 如何处理冲突的 HTTP GET 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561744/

相关文章:

python - 执行操作并重定向到相同的 URL 不会刷新页面

PHP - 引用重定向脚本

http - 为什么 HTTP 不是消息传递协议(protocol)? (根据 RabbitMQ)

rest - 已验证但未授权的 HTTP 状态代码?

api - 谷歌地图 API 是基于 REST 的吗?

sql - 在 SSRS 查询中使用参数

MySQL : When stored procedure parameter name is the same as table column name

URL 的 Java Android 重定向不起作用

java - 将嵌套 json 映射到具有原始 json 值的 pojo

function - 使用多个参数从.ps1运行PowerShell的函数