我一直在尝试向 Postman 上的服务器发送发布请求。但是我一直收到 400 Bad Request 错误。错误描述为“由于语法错误,无法完成请求。”但是,我的 JSON 正文没有任何错误的语法,其他类似的问题不包括语法正确时发生的此错误。
这是标题的样子:
发生这种情况的原因可能是什么?
编辑: 这是服务端的代码:
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const articleRoutes = express.Router();
const PORT = 4000;
let Article = require('./article.model');
app.use(cors());
app.use(bodyParser.json());
mongoose.connect('mongodb://127.0.0.1:27017/articles', { useNewUrlParser: true, useUnifiedTopology: true });
const connection = mongoose.connection;
connection.once('open', function() {
console.log("MongoDB database connection established successfully");
});
articleRoutes.route("/content-management-system/add").post((req, res) => {
let article = new Article(req.body);
console.log(article);
article.save()
.then(article => {
res.status(200).json({'article': 'article saved successfully'});
})
.catch(err => {
res.status(400).send('adding new article failed');
});
});
app.use('/', articleRoutes);
app.listen(PORT, function() {
console.log("Server is running on Port: " + PORT);
});
答案 0 :(得分:0)
哇,愚蠢的错误。我终于找到了答案!答案是在我的 mongoose.connect 行中,我将“文章”放在“mongodb://127.0.0.1:27017/”之后的“文章”中。
从 Danny 的评论中,我意识到“400 Bad Request”错误描述有点误导。这让我最初认为问题出在我发送的 JSON 主体上,即它的语法。但这可能不是问题。
因此,我再次检查了我的 save 方法是否是导致它始终默认为 catch 语句的问题。但是,这似乎也不是问题。
最后,我发现问题其实很简单。我不小心在 mongoose.connect 行中放入了“articles”而不是“article”。
故事的寓意:Postman 上显示的“400 Bad Request”错误可能具有误导性,问题可能不在于您作为请求传入的 JSON 正文的语法。< /p>