我有一台管理登录表单页面的Express服务器:
const app = express();
// section A
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.urlencoded());
app.get('/login', userController.getLogin);
app.post('/login', userController.postLogin);
它运行正常。
然后我有另一个读取RAW DATA的控制器:
// section B
const concat = require('concat-stream');
app.use(function(req, res, next) {
req.pipe(concat(function(data: any) {
req.body = data;
next();
}));
});
app.post('*', otherController.post);
export let post = (req: any, res: Response) => {
console.log(req.body); //i see RAW DATA
res.end('n');
}
它也很有效。
但如果我加入这两个部分,第二部分就会停止工作。
如何才能将req.pipe
仅用于B部分?
答案 0 :(得分:0)
这个中间件(几乎与其他每个中间件一样)都没有办法将其从某些请求中排除,因为用户希望排除的方法可以是任何东西 - url,header,query string,loaded用户等等。相反,中间件将路径逻辑放在你身上:或者(a)明确地包含它(这意味着放置在路由上,如我们的文档中所建议的)或(b)用你自己的排除逻辑包装中间件:
AdminApp.update("MyEAR", "app", ["-appname", "MyEAR",
"-target", "+WebSphere:" + cellName + "," + nodeName + "," + serverName,
"-contents", "./MyEAR.ear",
"-operation", "update"])
AdminConfig.save()