如何使用 fastify-http-proxy 拦截响应

How to intercept response with fastify-http-proxy

我正在尝试利用 fastify 和 fastify-http-proxy 为某些请求代理旧版 Web 服务器。

来自 fastify-http-proxy 存储库的示例代码:

const Fastify = require('fastify')
const server = Fastify()

server.register(require('fastify-http-proxy'), {
  upstream: 'http://my-legacy-webserver.com',
  prefix: '/legacy'
})

server.listen(3000)

它按预期工作,但一些代理请求可以 return 404,旧版网络服务器呈现其代理到客户端的自定义 404 页面。 我想拦截 404(可能每 40x 和 50x)响应并在我的 fastify 服务器中处理它们。有可能吗?我怎样才能做到这一点?

我认为这可以通过 replyOptions 中的 onResponse 处理程序来完成:

server.register(require('fastify-http-proxy'), {
  upstream: 'http://my-legacy-webserver.com',
  prefix: '/legacy',
  replyOptions: {
        onResponse (reply) {
             // you have access to the response here, e.g. check for errors and handle them
             reply.send("your modified response");
          }
      }
})