Первоначально опубликовано 13 ноября 2017 ( Подробнее )
В рамках проекта я работаю, мне нужно схватить некоторые данные через HTTP/S и передавать его как двоичные, но с доступом к этим заголовкам. Ниже приведен быстрое доказательство концепции для прослушивания HTTP-запросов с Express, запросить внешнее изображение по запросу и выполнить ответ верным в разъем Express Response, имея доступ к метаданным откликам, таких как заголовки.
'use strict'
const express = require('express')
const request = require('request')
const through2 = require('through2')
const app = express()
const imageUrl = 'http://via.placeholder.com/800x600?text=example'
app.use((incomingRequest, outgoingResponse) => {
const outgoingRequest = request(imageUrl)
const bufferOnPipe = through2(function (chunk, enc, callback) {
this.push(chunk)
callback()
})
const bufferedResponse = outgoingRequest.pipe(bufferOnPipe)
outgoingRequest.on('response', (incomingResponse) => {
if (incomingResponse.statusCode === 200) {
console.log('statusCode:', incomingResponse.statusCode)
console.log('headers:', incomingResponse.headers)
bufferedResponse.pipe(outgoingResponse)
} else {
console.log('non-200 statusCode:', incomingResponse.statusCode)
}
})
})
app.listen(8000, () => {
console.log('listening on 8000')
})
Следующий пост последовательно: пройти запрос буфера через Redis
Оригинал: “https://dev.to/adamkdean/pipe-stream-to-express-1jm6”