es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Múltiples objetivos en next-http-proxy-middleware.

Qué hacer si quiero tener múltiples destinos en mi next-http-proxy-middleware.
Sería genial tener la posibilidad de encadenar middlewares de proxy de esta manera, pero no funciona:

httpProxyMiddleware(req, res, {
target: process.env.target1,
pathRewrite: [{
patternStr: "^/api", replaceStr: "",
}],
}).then((response)=>httpProxyMiddleware(req, response, {
target: process.env.target2,
pathRewrite: [{
patternStr: "^/s3", replaceStr: "",
}],
}))

¿Cuál es la forma adecuada de hacer esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para tener varios destinos en tu next-http-proxy-middleware, puedes utilizar el paquete http-proxy-middleware en combinación con next-http-proxy-middleware. Aquí tienes un ejemplo de cómo lograrlo:

    const { createProxyMiddleware } = require('http-proxy-middleware');
    const nextHttpProxyMiddleware = require('next-http-proxy-middleware');
    
    module.exports = nextHttpProxyMiddleware({
      // Primer destino
      path: '/api',
      config: {
        target: 'http://first-target.com',
        changeOrigin: true, // opcional, establece en true si tu destino es un host remoto
        pathRewrite: {
          '^/api': '', // eliminar /api de la ruta de la solicitud
        },
      },
      // Segundo destino
      pathRewrite: {
        '^/s3': '',
      },
      onCompleteProxy: ({ res, buffer }) => {
        if (/* alguna condición */) {
          // modificar la respuesta del proxy desde el primer destino antes de pasarla al segundo destino
          const modifiedBuffer = modify(buffer);
          // devolver respuesta para enviar al navegador
          return { res, buffer: modifiedBuffer };
        }
        // devolver buffer para ser utilizado en el siguiente middleware
        return { buffer };
      },
      nextConfig: {
        /* tu objeto de configuración next.js aquí */
      },
    });
    
    

    En este ejemplo, estamos definiendo dos destinos: uno para las solicitudes que comienzan con /api y otro para las solicitudes que comienzan con /s3. También estamos definiendo una función onCompleteProxy que nos permite modificar la respuesta del primer destino antes de pasarla al segundo destino. Por último, pasamos nuestro objeto nextConfig a nextHttpProxyMiddleware para que pueda crear un middleware compatible con Next.js.

Comments are closed.