我有一个Node.js API,该API带有一个名称并给出422验证错误。
// Express is setup with bodyParser:
const bodyParser = require('body-parser');
const app = express()
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.use(express.static('files'))
...
// API:
app.post('/test',
[
body('name').exists(),
],
async (req, res, next) => {
try{
const errors = validationResult(req);
if(!errors.isEmpty()){
return res.status(422).json({ errors: errors.array() });
}
return res.status(200).send('Your name is ' + req.body.name);
}catch(error){
return res.status(422).json({ errors: errors.array() });
}
}
我通过Axios访问此文件:
const rb = {
name : 'John',
}
const config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
params: {
name : 'John'
}
}
axios.post(url, rb, config)
.then((result) => {
callback('Success', result);
})
.catch((err) => {
callback('Oops!', err);
});
我返回了第一个422,Node.js不能解析我的“名称”参数。它不在req.body中
我是否通过Axios发送了错误的请求?它适用于邮递员。
答案 0 :(得分:0)
rb
应该是作为请求正文传递的对象:
axios.post(url, { name : 'John' }, config)
params
配置选项用于传递查询/ URL参数(可通过req.query
访问)。
鉴于它可以在Postman中使用,我假设您的Express服务器使用的是正确的正文解析器(express.urlencoded
)。