使用SPQR Graphql上传文件

时间:2019-05-27 17:35:04

标签: spring-boot graphql-spqr

我正在使用spring boot和spqr graphql库。我需要通过graphql上传文件。我不知道服务中应该使用哪种对象类型,我假设甚至不支持该对象类型。

有人尝试过吗?有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

您最好的选择是实施GraphQL multipart request spec,这要归功于Spring不会太复杂。

此外,您始终可以通过将@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> request作为方法参数来插入原始请求。从那里可以获得输入和输出流。

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

在不久的将来,入门者将立即支持GraphQL多部分请求规范。

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

但是,尽管如此,通常最好的方法是完全处理GraphQL之外的二进制文件(仅使用GraphQL发送下载URL等),因此,我强烈建议您尽可能采用这种方法。原因是,要求使用可选规格会破坏与大多数客户端的现成兼容性。