1

我正在尝试开发一个 RESTful Web 服务,该服务将用于用户、产品等实体。

要创建我想使用的新用户

[POST] site/user

正如 REST 规范所说

但是,我也想搜索用户。根据 REST 规范,这将是

[GET] site/user?name=Shuaib&city=Dhaka

到目前为止,一切都很好。但是,如果我想输入大型 JSON 数据作为搜索参数的一部分怎么办?如果我在这种情况下使用 get -> 我的 url 会看起来很笨拙 -> 因为 GET 请求 url 大小有限制,大型 JSON 数据可能会超过 url 大小

由于这些问题,我想使用 POST 来搜索用户。

[POST] site/user

这是一个好的开发实践吗?

4

1 回答 1

1

不,这不是一个好的开发方法,尤其是当您担心其他开发人员使用您的 API 时。如果您可以使用 URI 参数进行搜索,开发人员可能会惊讶于他可以提交包含大量参数的巨大 URI 并且仍然有效,但其中没有不一致或理解障碍。

另一方面,如果您仅仅因为您不想要那些巨大的 URI 而通过 POST 进行标准化为 GET 的操作,那么您必须记录这一点,开发人员必须熟悉您的决定,这将成为理解的问题。

请记住,HTTP 标准没有对 URI 大小建立任何限制,因此大小过大不会影响您的 API 设计决策。当然,几乎 100% 的客户端和服务器都以某种方式损坏,并且对 URI 大小有一定的限制。如果您确实达到了该限制,那么解决问题的 RESTful 方法是使用一些与您的服务松散耦合的解决方法,并且它被明确记录为解决方案损坏的解决方法。例如,一个预处理器将带有X-HTTP-Method-Override: GET标头的 POST 请求重写为 GET 请求,就像Google Translate API所做的那样。

于 2013-11-05T23:33:28.207 回答