微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Ariadne 中使用来自 Apollo 的 BatchHttpLink

如何解决在 Ariadne 中使用来自 Apollo 的 BatchHttpLink

我的客户端应用程序使用 React + Apollo 编写,后端使用 Python + Ariadne 编写。有没有办法处理 Ariadne 中的批量查询数组?

我在客户端中设置了自定义 Link

const apolloClient = new ApolloClient({
   cache: InMemoryCache(),link: new BatchHttpLink({ uri })
});

客户端开始按预期在数组中发送查询,但不幸的是我收到了 400 Bad Request,因为后端需要一个对象而不是数组。

我不确定是否应该为 Ariadne 创建一个中间件并手动处理请求,还是有一些自动解决方案?我正在尝试使用 Google,但短语 ariadne + batch/batching 似乎没有一起出现...

解决方法

我还没有真正使用过这个特定的 GraphQL 服务器实现,但值得注意的是,“批处理链接”确实只是发送一个查询数组,这是一个规范扩展而不是原始规范的一部分,所以如果您的服务器-implementation 和 GraphQL 端点不支持此功能,您必须手动添加此功能。

不过,这并不是一个特别特别的逻辑。它执行数组中的所有查询,就好像它们是单独发送的一样。您可以在此处找到有关此行为的稻草人规范文档:https://github.com/graphql/graphql-over-http/blob/main/rfcs/Batching.md

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。