我正在为NodeJS使用mikeal's真棒request模块。我也在express使用它,我代表调用API来解决旧浏览器的CORS问题:
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();
}
});
在将request
的回复传回express
之前,有没有办法可以修改正文?
答案 0 :(得分:11)
基于这个答案:Change response body before outputting in node.js我做了一个我在自己的应用程序上使用的工作示例:
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);
});
欢迎任何改进,希望它有所帮助!
答案 1 :(得分:2)
您可能想要使用transform stream。经过一些谷歌搜索后,我发现了以下blog post。