【发布时间】:2021-05-13 14:05:04
【问题描述】:
我有一个带有 node.js + fastify 服务器的小项目,我想在其中使用 fastify-http-proxy https://github.com/fastify/fastify-http-proxy 将请求代理到外部 API(此处没有现有标签) .此外部 API 希望将其 api-key 指定为查询参数。我想将此密钥添加到我的服务器中的代理请求,而不是我们的前端。但是我似乎无法让它与 replyOptions.queryString 一起工作,因为它没有直接访问 request.query 的权限,它会覆盖原始请求查询,从而使整个调用变得无用:
let originalRequestQueries = {};
fastify.register(proxy, {
upstream: CONFIG.externalApi,
prefix: '/api/stocks',
undici: true,
replyOptions: {
queryString: {
...originalRequestQueries,
apikey: CONFIG.apiKey,
},
},
preHandler: async (req, reply) => {
try {
await req.jwtVerify();
originalRequestQueries = req.query;
console.log(originalRequestQueries);
} catch (err) {
throw boom.boomify(err);
}
},
});
关于如何完成这项工作的任何提示?我似乎无法在 fastify-http-proxy 文档和 fastify-reply-from 的任何地方找到相关信息。 如果我在进入服务器的请求中指定 apikey 查询参数,则代理工作得很好。 亲切的问候, 乙
【问题讨论】: