#javascript #node.js #express
#язык JavaScript #node.js #экспресс
Вопрос:
У меня есть приложение node js, действующее в качестве среднего уровня для проекта искусственного интеллекта, над которым я работаю.
Я хочу перенаправить запрос (учитывая логику, чтобы определить, нужно ли перенаправлять запрос, и другие вещи). Это будет вызов api POST (он же без перенаправлений).
Вместо настройки промежуточного программного обеспечения прокси-сервера я вижу, что запрос может быть передан по конвейеру с помощью библиотеки запросов.
Тем не менее, похоже, что запрос post получает ошибку записи, если я скажу закрыть исходный поток запроса POST, он ошибается, говоря, что я не могу писать в закрытый поток. 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)
Итак, я говорю потоку запросов post оставаться открытым и закрыть его в следующем канале .pipe(res, {end:true}
.
Я полагаю, что, поскольку труба объединяет потоки, результирующий поток должен быть закрыт.
Правильно ли мое предположение? Как я могу сказать, что все потоки закрываются?
Окончательный код
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 }) }