使用拼接schema的Hot Chocolate GraphQL网关批量操作报HC0013错误
问题根因
- 网关仅做了基础的Schema合并配置,默认没有开启Hot Chocolate的批量请求处理能力,无法识别
batchOperations参数格式的批量请求,会判定请求未传入合法的query参数,抛出HC0013错误。 - 你使用的
@export跨操作变量传递指令,网关默认未注册,即使开启批量请求也会出现指令不识别的问题。
解决方案
修改网关的GraphQL服务配置,开启批量请求支持、注册导出指令即可,修改后配置如下:
services .AddGraphQLServer() // 开启批量请求能力,兼容GET参数batchOperations和POST数组两种批量请求格式 .EnableBatchedRequests() // 若使用GET方式提交批量Mutation,需开启GET请求执行Mutation的权限 .AllowGETRequests() // 注册@export指令,确保网关识别该指令并透传到下游服务 .AddExportDirectiveType() .AddRemoteSchema(WellKnownSchemaNames.Applicability) .AddRemoteSchema(WellKnownSchemaNames.Modifications);
可选优化建议
- 生产环境建议关闭GET请求执行Mutation的权限,将批量请求改为POST方式提交,避免CSRF风险,提交时将多个操作放入JSON数组即可,无需修改其他配置。
- 如果你后续需要跨不同下游服务做变量导出,还需要额外配置网关的上下文变量传递规则,当前两个Mutation都归属Modification服务,无需额外配置。
内容的提问来源于stack exchange,提问作者user1443986
相关产品推荐
相关产品推荐

