Tengo una aplicación de nodo js que actúa como una capa intermedia para un proyecto de inteligencia artificial en el que estoy trabajando.
Quiero redirigir una solicitud (dada la lógica para determinar si es necesario redirigir la solicitud y otras cosas). Esta será una llamada POST api (también conocida como no se permiten redireccionamientos).
En lugar de configurar un middleware de proxy, veo que la solicitud se puede canalizar mediante la solicitud lib.
Sin embargo, parece que la solicitud de publicación recibe un error de escritura, si digo cerrar la secuencia de solicitud POST original, el error dice que no puedo escribir en una secuencia cerrada. Error: write after end
req.pipe(request({ url: `${AI_BRAIN_URL}/project/${ai_project_key}`, method: 'POST', headers: req.headers, body: JSON.stringify(req.body) })).pipe(res) Entonces, le digo a la secuencia de solicitud posterior que permanezca abierta y que la cierre en la siguiente canalización .pipe(res, {end:true} .
Me imagino que dado que la tubería fusiona las corrientes, la corriente resultante debe cerrarse.
¿Es correcta mi suposición? ¿Cómo puedo saber que todas las transmisiones se están cerrando?
Código definitivo
async function routeToBrain(req, res, next) { const { ai_project_key } = req.body const { user_key } = req.user // logic to determine routing return req.pipe(request({ url: `${AI_BRAIN_URL}/project/${ai_project_key}`, method: 'POST', headers: req.headers, body: JSON.stringify(req.body) }), { end: false }).pipe(res, { end: true }) }