API搜索的最佳做法是什么?
答案 0 :(得分:4)
不要包含带有GET请求的正文。那是针对spec:
的GET请求消息中的有效负载没有定义的语义; 在GET请求上发送有效负载主体可能会导致一些存在 拒绝请求的实现。
其他两个选项之间存在权衡。 GET请求是可缓存的,安全的和幂等的。他们还limited in size.
POST请求不可靠地可缓存,安全或幂等,并且没有大小限制。还有更多的灵活性 - 除了返回搜索结果之外,您可以稍后在服务器端创建过滤器资源,以后搜索可以使用该过滤器,可能使用GET,但是如果允许缓存则要小心并在创建过滤器定义后对其进行更改。
查看您的具体示例,支持单个"搜索"端点可以很快变得凌乱。如果您还没有,我会鼓励您考虑其他选择。
答案 1 :(得分:0)
POST请求被视为在服务器上更改或创建数据。 GET被认为是一种安全方法"这对服务器数据库没有影响。
由于搜索请求通常不会更改任何数据,因此您应该使用GET请求。限制是至少2000个符号(IE),因此大多数时候你都非常安全。
答案 2 :(得分:0)
绝对使用查询参数执行1,GET
。它更有可能被缓存。
如果数据模型中没有任何内容在服务器上发生更改,则您的请求应为GET。服务器操作类似于日志记录是可以的,但是创建过滤器(作为建议的另一个答案),与查询缓存不同,例如,不是。