1

我正在使用 spring boot 和 spqr graphql 库。我需要通过 graphql 上传文件。我不知道在服务中期望什么对象类型,我假设这甚至不受支持。

有没有人试过这个?有什么建议吗?

谢谢。

4

1 回答 1

1

(假设您使用的是 SPQR Spring Starter)上传/下载二进制文件目前在 SPQR 中不方便,但并非不可能。您需要用自己的控制器覆盖提供的控制器,并决定如何接收查询和二进制文件,以及如何将结果和二进制文件发回。要覆盖控制器,只需提供您自己的 beanGraphQLController类型。

最好的办法是实现GraphQL 多部分请求规范,这要归功于 Spring,它不应该太复杂。

顺便说一句,您始终可以通过@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> request作为方法参数注入来获取原始请求。从那里您可以获得输入和输出流。

您还可以连接自定义ArgumentInjector,如果您愿意,可以注入更精确的内容。

在不久的将来,starter 将支持开箱即用的 GraphQL 多部分请求规范。

如果您不使用启动器,则情况类似,因为您需要自己实现二进制文件和查询的传输。

但是,尽管如此,最好的做法是完全处理 GraphQL 之外的二进制文件(仅使用 GraphQL 发送下载 URL 等),所以如果可能的话,我强烈推荐这种方法。原因是需要可选规范会破坏与大多数客户端的开箱即用兼容性。

于 2019-08-07T14:46:22.477 回答