我需要在api代理期间通过在那里添加一些内容来编辑请求的正文,而我能想到的唯一方法是使用正文解析器来访问req.body
。
const compression = require('compression');
const express = require('express');
const request = require('request');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const app = express();
// Add body parser
app.use(bodyParser.json());
// Enable gZip compression
app.use(compression());
// Disable X-Powered-By header for security reasons
app.disable('x-powered-by');
// Add cookie parser
app.use(cookieParser());
// Example proxy
app.post('/api', (req, res) => {
const url = 'https://my.api.com';
req.pipe(request({
url,
headers: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
auth: {
user: 'user',
pass: 'password'
}
})).pipe(res);
});
然而,只要我添加了body解析器api挂起,它就会挂起,然后超时。注意我还没有在示例中添加任何正文操作,因为我需要首先解决这个api。
答案 0 :(得分:1)
您可以在 bodyParser 之前移动压缩中间件,然后在bodyParser.urlencoded
之前再添加一个bodyParser.json
来解析application/x-www-form-urlencoded
// Enable gZip compression
app.use(compression());
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
extended: true
}));
// Add body parser
app.use(bodyParser.json());