RFC 10008 发布新 HTTP 方法 QUERY,能否解决 GET、POST 查询难题? 📅 2026/6/24 2:16:04 【Kreya 1.20 版本发布】Kreya 1.20 版本已发布添加了基于操作的登录功能还有大量其他改进。【近期文章】2026 年的文章有《全新 HTTP QUERY 方法详解》《Kreya 1.20 - 新特性》等2025 年的文章有《5 款最佳 API 测试工具》《Kreya 1.18 - 新特性》等2024 年的文章有《Kreya 1.15 - 新特性》《揭秘 Protobuf 有线格式》等2023 年的文章有《使用 Kreya 解决 Advent of Code 问题》《Kreya 1.12 - 新特性》等2022 年的文章有《Kreya 1.9 - 新特性》《Kreya 1.8 - 新特性》等2021 年的文章有《gRPC - 最佳实践》《Kreya 1.7 - 新特性》等。【全新 HTTP QUERY 方法详解】2026 年 6 月 17 日Manuel 介绍在 RESTful API 中HTTP 方法能向服务器传达意图。最近RFC 10008 发布定义了 HTTP 的新方法 QUERY。从纯技术角度看HTTP 方法是字符串但实践中围绕常见 HTTP 方法有大量规范和隐含行为。例如浏览器输入地址或点击书签会发送 GET 请求标准 HTTP 表单只允许 GET 和 POST 方法多数代理、防火墙和 Web 服务器只允许“标准”HTTP 方法。那么为何要引入新的 HTTP 方法呢【使用 GET 进行查询】传统上对资源过滤会在 GET 请求中用查询参数简单过滤有效但复杂查询时 URL 会冗长还可能达字符限制。其他潜在问题包括发送非 ASCII 或特殊字符需编码增加请求大小服务器和中间件可能记录请求参数表达数据结构方式不明确表达深度嵌套结构也有问题。理论上可发送带 JSON 请求体的 GET 请求但各种客户端、代理和 Web 服务器处理方式不同使用带有请求体的 HTTP GET 不是好主意这也是没有新 RFC 指定 GET 请求应支持请求体的原因。【变通方法使用 POST 进行查询】由于使用 GET 发送请求体可能有问题变通方法是使用 POST。但 POST 允许使用请求体却会引入严重语义问题它被定义为非幂等的用于资源创建或处理。在实现失败自动重试时会很烦人且代理或中间件无法自动理解该操作是只读的。【QUERY 方法】上述原因促使经过多年讨论后QUERY 方法被正式确定。它与 GET 方法类似但带有请求体被设计为安全且幂等的。QUERY 请求可以被缓存但实现时必须小心地将请求内容纳入缓存键。它为复杂的搜索查询提供了合适的 HTTP 方法。【QUERY 的注意事项】想将所有与搜索相关的端点都切换为使用 QUERY有几件事需要考虑目前对 HTTP QUERY 的支持仍然非常有限可能在一段时间内都会如此例如 Kreya 在 1.20 版本中添加了对 HTTP QUERY 的开箱即用支持其他客户端、代理和 Web 服务器可能仍然会拒绝它标准的 GET 查询仍然可行没有立即更改需求就保持原样如果用户需要共享或书签过滤后数据的链接继续使用 GET 请求为 QUERY 请求实现自定义缓存比为 GET 请求更困难因为需要考虑请求体。【总结】HTTP QUERY 替代了用于只读请求的 POST 方法虽然可能需要一些时间才能在所有地方得到完全支持但如果普通的 GET 请求无法满足用例仍然应该考虑并测试使用它。【社区】包括博客、文档、GitHub、Twitter 等。【对比】与 Postman、Insomnia、BloomRPC、Bruno、SoapUI、SwaggerUI 等对比。【支持】包括定价、管理订阅、常见问题解答、文档等。【关于】包括隐私政策、使用条款、riok GmbH 等。