我正在使用spring boot和spqr graphql库。我需要通过graphql上传文件。我不知道服务中应该使用哪种对象类型,我假设甚至不支持该对象类型。
有人尝试过吗?有什么建议吗?
谢谢。
答案 0 :(得分:0)
(假设您正在使用SPQR Spring Starter)
当前在SPQR中不方便上传/下载二进制文件,但并非不可能。您需要使用自己的控制器覆盖提供的控制器,并决定如何接收查询和二进制文件,以及如何将结果和二进制文件发送回去。要覆盖控制器,只需提供自己的GraphQLController
类型的bean。
您最好的选择是实施GraphQL multipart request spec,这要归功于Spring不会太复杂。
此外,您始终可以通过将@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> request
作为方法参数来插入原始请求。从那里可以获得输入和输出流。
您还可以连接自定义ArgumentInjector
,如果需要的话可以注入更精确的内容。
在不久的将来,入门者将立即支持GraphQL多部分请求规范。
如果您不使用启动器,情况就类似,因为您自己可以实现二进制文件和查询的传输。
但是,尽管如此,通常最好的方法是完全处理GraphQL之外的二进制文件(仅使用GraphQL发送下载URL等),因此,我强烈建议您尽可能采用这种方法。原因是,要求使用可选规格会破坏与大多数客户端的现成兼容性。