Express:防止bodyParser解析请求

时间:2017-02-02 00:18:34

标签: json node.js express

我正在使用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
});

有谁知道如何实现这一目标?

2 个答案:

答案 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 });