Rom*_*per 8 api rest restful-url restful-architecture
在API中进行搜索的最佳做法是什么?
不要在 GET 请求中包含正文。这违反了规范:
GET 请求消息中的负载没有定义的语义;在 GET 请求上发送有效负载正文可能会导致某些现有实现拒绝该请求。
其他两个选项之间存在权衡。GET 请求是可缓存的、安全的和幂等的。它们的尺寸也有限。
POST 请求不能可靠地缓存、安全或幂等,并且没有大小限制。还有更多的灵活性 - 除了返回搜索结果之外,您可以稍后在服务器端创建过滤器资源,稍后搜索可以使用该过滤器,可能使用 GET,但如果您允许缓存和更改创建后的过滤器定义。
查看您的具体示例,支持单个“搜索”端点可能会很快变得混乱。如果您还没有,我鼓励您考虑其他选择。
POST 请求被认为是在服务器上更改或创建数据。GET 被认为是一种“安全方法”,对服务器数据库没有影响。
由于搜索请求通常不会更改任何数据,因此您应该使用 GET 请求。限制至少为 2000 个符号 (IE),因此大多数时候您是相当安全的。