在HTTP API中搜索动词

时间:2017-05-11 13:14:00

标签: rest api restful-architecture restful-url

API搜索的最佳做法是什么?

  • GET +查询参数,例如:GET / search?q = phone
  • 正文中的GET +参数,例如:GET / search {" query":" phone"}
  • 正文中的POST +参数,例如:POST / search {" query":" phone"}

3 个答案:

答案 0 :(得分:4)

不要包含带有GET请求的正文。那是针对spec

  

GET请求消息中的有效负载没有定义的语义;      在GET请求上发送有效负载主体可能会导致一些存在      拒绝请求的实现。

其他两个选项之间存在权衡。 GET请求是可缓存的,安全的和幂等的。他们还limited in size.

POST请求不可靠地可缓存,安全或幂等,并且没有大小限制。还有更多的灵活性 - 除了返回搜索结果之外,您可以稍后在服务器端创建过滤器资源,以后搜索可以使用该过滤器,可能使用GET,但是如果允许缓存则要小心并在创建过滤器定义后对其进行更改。

查看您的具体示例,支持单个"搜索"端点可以很快变得凌乱。如果您还没有,我会鼓励您考虑其他选择。

答案 1 :(得分:0)

POST请求被视为在服务器上更改或创建数据。 GET被认为是一种安全方法"这对服务器数据库没有影响。

由于搜索请求通常不会更改任何数据,因此您应该使用GET请求。限制是至少2000个符号(IE),因此大多数时候你都非常安全。

答案 2 :(得分:0)

绝对使用查询参数执行1,GET。它更有可能被缓存。

如果数据模型中没有任何内容在服务器上发生更改,则您的请求应为GET。服务器操作类似于日志记录是可以的,但是创建过滤器(作为建议的另一个答案),与查询缓存不同,例如,不是。

相关问题