BJP*_*rim 3 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
}));
Run Code Online (Sandbox Code Playgroud)
这是必需的并且按预期工作。但是,对于某些请求,我想强制应用程序不自动将请求解析为 json,而是将其保留为纯文本,即:
app.post('/myRequest', function (req.asPlainText(), res) {
// req is not parsed to json now
});
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎样才能实现这一目标?
您可以传递一个字符串作为第一个参数app.use(),它只会将中间件应用于匹配的路径。该文档可以在http://expressjs.com/en/4x/api.html#app.use找到。
一个例子:
app.use('/', bodyParser.json())
Run Code Online (Sandbox Code Playgroud)
您还可以在将 body-parser 添加为全局中间件之前声明任何不需要 body-parser 的路由,但通常最好只在实际需要 body 的地方使用 body-parser。
如果你不想为每个路由使用 app.use() ,你也可以在路由声明中传递中间件,如下所示:
app.post('/', bodyParser.json(), function(req, res) {
// handle route here
})
Run Code Online (Sandbox Code Playgroud)
要不将其用于某些路线,只需不要将其包含在路线中即可。