关于spring-graphql支持HTTP-GET扩展及持久化查询的问询
Spring GraphQL 持久化查询与GET请求支持问题解答
你的分析完全正确。Spring GraphQL默认的
RouterFunction仅将POST请求映射到GraphQL端点,且默认的GraphQlHttpHandler并未实现GET请求的处理逻辑——它仅解析POST请求体中的GraphQL参数,包括持久化查询所需的扩展字段。截至当前版本,Spring GraphQL官方尚未公开明确的计划或路线图来添加GET请求的原生支持。这主要是因为GraphQL规范虽允许GET,但生产环境中POST是更主流的选择,同时持久化查询的哈希值等信息通过请求体传递更安全,也能避免URL长度限制的问题。不过如果社区反馈的需求足够强烈,后续版本有可能纳入支持。
若要实现GET支持,除了完全自定义处理器外,你可以尝试扩展请求解析逻辑:
- 自定义
HttpGraphQlRequestParser实现,从GET请求的查询参数中提取query、variables、operationName,以及持久化查询所需的extensions字段(包含Apollo自动持久化查询的哈希值)。 - 将提取到的参数转换为标准的
GraphQlHttpRequest对象,再交给默认的GraphQlHttpHandler处理。 - 最后将自定义的解析器注册到Spring容器中,替换默认实现即可。
- 自定义
内容的提问来源于stack exchange,提问作者Wolfgang Schröder
相关产品推荐
相关产品推荐

