我目前正在尝试实现 Apollo 联合服务器。但是我面临的问题是阿波罗联邦不会将文件传递给联邦服务中的解析器。
所以在网关中我需要将文件发布到我的休息端点,见下文
/**
* ApolloServer
*/
const server = new ApolloServer({
schema,
executor: executor as any,
subscriptions: false,
plugins: [
{
//@ts-ignore
async requestDidStart({ request }) {
const { createReadStream, filename, mimetype, encoding } = await request.variables?.uploadFile
const file = createReadStream()
let formData = new FormData;
formData.append('name', filename)
formData.append('file',file, {
filename: filename,
contentType: mimetype
})
fetch('http://my-api/api/v1/file', {
method: 'post',
body: formData,
// headers: {
// "Content-Type": "multipart/form-data",
// },
}).then(res => res.json())
.then(json => console.log(json));
// console.log(filename)
// console.log(mimetype)
// console.log(encoding)
// console.log(file)
}
},
],
context: ({ req }) => {
// Get the jwtToken from the client
const token = req.headers.authorization || '' // headers SENT to gateway
return { token: token }
},
debug: ENV.NODE_ENV !== 'development' ? true : false
// formatError: err => formatError(err)
}) as any
当我使用这种方法时。该文件在我的休息端点上是空的,它是用流明编写的。任何建议都会有很大帮助!