RESTful API和垃圾查询字符串

时间:2016-06-27 14:03:17

标签: json api rest query-parameters

我正在创建一个RESTful API,我想知道什么是RESTful方式来处理' junk'查询参数是。目前我有一个可以限制返回数据的参数;

my.api.com/v1/users?limit=2

但如果我收到拼写错误

my.api.com/v1/users?limti=2

或未实施的参数

my.api.com/v1/users?order=asc

我应该返回错误JSON响应还是完全忽略它(即用户检查响应是否正确的责任)。

我通常会使用错误响应方式,但我注意到许多网站/服务只是忽略了不正确的参数。

1 个答案:

答案 0 :(得分:0)

查询参数是资源标识符的一部分。见RFC-3986

  

查询组件包含非分层数据,与路径组件(第3.3节)中的数据一起用于标识URI方案和命名权限(如果有)范围内的资源。查询组件由第一个问号(“?”)字符表示,并以数字符号(“#”)字符或URI的末尾结束。

因此,要回答的重要问题是

GET my.api.com/v1/users?limti=2

是:该资源是否存在?

对我来说,该URI看起来像是客户端错误;作为您的API的消费者,希望您的终端通知我我犯的错误(404看起来合适),而不是给我一个不是我想要的任意响应。 “快速失败”使问题更容易被发现。

但同样有效地说“是的,资源确实存在 - 这里是它的代表”并传回你喜欢的东西。这没有用,但也没错。毕竟,如果我的拼写错误通过运气实际匹配系统中资源的拼写,那么你最终会做的就是这样。例如,考虑一下当我要求my.api.com/v1/users?limit=2时我的api将要做什么my.api.com/v1/suers?limit=2

妥协(可能是两个世界中最糟糕的)将客户端重定向到系统中的真实资源。例如,如果您只是忽略order = asc参数,那么将客户端重定向到my.api.com/v1/users可能会更友好,而不是仅仅随意地回传该表示。

相关问题