Как перехватить ответ с помощью fastify-http-proxy

#node.js #fastify

#node.js #быстрый

Вопрос:

Я пытаюсь использовать fastify и fastify-http-proxy для прокси-сервера устаревшего веб-сервера для некоторых запросов.

Пример кода из репозитория 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)
 

Это работает так, как ожидалось, но какой-то прокси-запрос может вернуть 404, при этом устаревший веб-сервер отображает свою пользовательскую страницу 404, которая проксируется клиенту.
Я хотел бы перехватить 404 (возможно, каждые 40x, а также 50x) ответов и обработать их на моем сервере fastify. Возможно ли это? Как я могу этого добиться?

Ответ №1:

Я думаю, это можно сделать с onResponse помощью обработчика в replyOptions :

 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");
          }
      }
})