我正在使用Nodejs + Express版本4.14.0:
var app = express();
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
这是必需的并且按预期工作。但是,对于某些请求,我想强制应用程序不会自动将请求解析为json,而是将其保留为纯文本,例如:
app.post('/myRequest', function (req.asPlainText(), res) {
// req is not parsed to json now
});
有谁知道如何实现这一目标?
答案 0 :(得分:4)
您可以将字符串作为第一个参数传递给app.use()
,它只会将中间件应用于匹配的路径。该文档可在http://expressjs.com/en/4x/api.html#app.use找到。
一个例子:
app.use('/', bodyParser.json())
在将其添加为全局中间件之前,您还可以声明任何不需要body-parser的路由,但通常只需要在实际需要正文的地方使用body-parser。
如果您不想为每条路线使用app.use(),您还可以在路线声明中传递中间件,如:
app.post('/', bodyParser.json(), function(req, res) {
// handle route here
})
如果不将其用于某些路线,请不要将其包含在路线中。
答案 1 :(得分:1)
使用form.serialize创建变量并将result包含为参数。
var req = document.forms[0].serialize();
app.post('/myRequest', req, res) {
// req is not parsed to json now
});