密钥已通过但邮递员验证失败
Key passed but validation fails in postman
我有这个补丁请求,我根据文档的对象更新某些信息。当我使用 Postman(form-data) 发送请求时,我收到验证错误,提示“_id”是必需的。
这是它在 Postman 中的样子,
路线与此类似,
router.patch("/update", async (req, res) => {
try{
await updateValidation(req.body);
// whatever stuff processed with the data
} catch (err) {
res.status(400).send({ message: err.details[0].message });
}
}
验证函数如下所示,
const updateValidation = (data) => {
const schema = Joi.object({
_id: Joi.string().required(),
// other whatever validation possible
});
return schema.validateAsync(data);
};
我是不是漏掉了什么?我觉得我知道,请指出。
除了在服务器端使用 var bodyParser = require('body-parser');
之外,它仍然 return 为空 req.body 这将导致错误,因为您已经进行了验证。在 Postman 中使用表单数据发送 PATCH 请求时 return 为空 req.body 的原因是正文解析器无法处理 multipart/form-data。您需要一个可以像 multer 一样处理 multipart/form-data 的包。
首先安装 body-parser 和 multer,进入你的终端并使用 -
npm install --save body-parser multer
所以将此代码添加到 server.js
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer();
var app = express();
下次使用这个中间件:
// for parsing application/json
app.use(bodyParser.json());
// for parsing application/xwww-
app.use(bodyParser.urlencoded({ extended: true }));
//form-urlencoded
// for parsing multipart/form-data
app.use(upload.array());
app.use(express.static('public'));
导入body解析器和multer后,我们将使用body-parser解析json和x-www-form-urlencoded头请求,同时我们将使用multer解析multipart/form-data .
我有这个补丁请求,我根据文档的对象更新某些信息。当我使用 Postman(form-data) 发送请求时,我收到验证错误,提示“_id”是必需的。
这是它在 Postman 中的样子,
路线与此类似,
router.patch("/update", async (req, res) => {
try{
await updateValidation(req.body);
// whatever stuff processed with the data
} catch (err) {
res.status(400).send({ message: err.details[0].message });
}
}
验证函数如下所示,
const updateValidation = (data) => {
const schema = Joi.object({
_id: Joi.string().required(),
// other whatever validation possible
});
return schema.validateAsync(data);
};
我是不是漏掉了什么?我觉得我知道,请指出。
除了在服务器端使用 var bodyParser = require('body-parser');
之外,它仍然 return 为空 req.body 这将导致错误,因为您已经进行了验证。在 Postman 中使用表单数据发送 PATCH 请求时 return 为空 req.body 的原因是正文解析器无法处理 multipart/form-data。您需要一个可以像 multer 一样处理 multipart/form-data 的包。
首先安装 body-parser 和 multer,进入你的终端并使用 -
npm install --save body-parser multer
所以将此代码添加到 server.js
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer();
var app = express();
下次使用这个中间件:
// for parsing application/json
app.use(bodyParser.json());
// for parsing application/xwww-
app.use(bodyParser.urlencoded({ extended: true }));
//form-urlencoded
// for parsing multipart/form-data
app.use(upload.array());
app.use(express.static('public'));
导入body解析器和multer后,我们将使用body-parser解析json和x-www-form-urlencoded头请求,同时我们将使用multer解析multipart/form-data .