我正在使用 spring boot 和 spqr graphql 库。我需要通过 graphql 上传文件。我不知道在服务中期望什么对象类型,我假设这甚至不受支持。
有没有人试过这个?有什么建议吗?
谢谢。
我正在使用 spring boot 和 spqr graphql 库。我需要通过 graphql 上传文件。我不知道在服务中期望什么对象类型,我假设这甚至不受支持。
有没有人试过这个?有什么建议吗?
谢谢。
(假设您使用的是 SPQR Spring Starter)上传/下载二进制文件目前在 SPQR 中不方便,但并非不可能。您需要用自己的控制器覆盖提供的控制器,并决定如何接收查询和二进制文件,以及如何将结果和二进制文件发回。要覆盖控制器,只需提供您自己的 beanGraphQLController
类型。
最好的办法是实现GraphQL 多部分请求规范,这要归功于 Spring,它不应该太复杂。
顺便说一句,您始终可以通过@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> request
作为方法参数注入来获取原始请求。从那里您可以获得输入和输出流。
您还可以连接自定义ArgumentInjector
,如果您愿意,可以注入更精确的内容。
在不久的将来,starter 将支持开箱即用的 GraphQL 多部分请求规范。
如果您不使用启动器,则情况类似,因为您需要自己实现二进制文件和查询的传输。
但是,尽管如此,最好的做法是完全处理 GraphQL 之外的二进制文件(仅使用 GraphQL 发送下载 URL 等),所以如果可能的话,我强烈推荐这种方法。原因是需要可选规范会破坏与大多数客户端的开箱即用兼容性。