I'm using mikeal's awesome request module for NodeJS. I'm also using it with express where I'm proxying a call to the API for getting around CORS issues for older browsers:
app.use(function(request, response, next) {
var matches = request.url.match(/^\/API_ENDPOINT\/(.*)/),
method = request.method.toLowerCase(),
url;
if (matches) {
url = 'http://myapi.com' + matches[0];
return request.pipe(req[method](url)).pipe(response);
} else {
next();
}
});
Is there a way I can modify the body before I pipe the request
's response back to express
?
Based on this answer: Change response body before outputting in node.js I made a working example that I use on my own app:
app.get("/example", function (req, resp) {
var write = concat(function(response) {
// Here you can modify the body
// As an example I am replacing . with spaces
if (response != undefined) {
response = response.toString().replace(/\./g, " ");
}
resp.end(response);
});
request.get(requestUrl)
.on('response',
function (response) {
//Here you can modify the headers
resp.writeHead(response.statusCode, response.headers);
}
).pipe(write);
});
Any improvements will be welcome, hope it helps!
You probably want to use a transform stream. After some googling I found the following blog post.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With