Node.js Express3 到 Express4 迁移 - 解析器使用

Node.js Express3 to Express4 migration - parser usage

我的基于节点的服务器使用 Express。服务器处理 json 仅使用多部分表单的路由和文件上传路由。使用 Express3 时,内置解析器会解析这两种路由。我正在迁移到 Express4。我必须为 Express4 切换的主体解析器仅解析 jsons。我正在使用 multer 解析器来解析文件上传。

对于每个路由,我指定要使用的解析器,如:

var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');

var jsonParser = bodyParser.json();
var upload = multer({dest : 'upload/' });
var uploadParser = upload.any();
var app = express();

// json route handling
app.post('json_only_route', jsonParser, function(req, res) {...});

// upload route handling
app.post('upload_route',    uploadParser, function(req, res) {...});

或者,对于 json 仅解析,我也可以使用 multer 解析器,如下所示:

var jsonParserMulter = uploadParser.none();

// json route handling
app.post('json_only_route', jsonParserMulter, function(req, res) {...});

是否有理由使用一种方法而不是另一种方法? 'body-parser' 是否会为 json 仅解析提供更好的性能?

multer 好像不支持JSON。通过使用 uploadParser.none() 它将作为字符串传递给 JSON 。如果您想将 JSON 字符串解析为一个对象,Express' bodyParser.json() 是必经之路。