没有语法错误时邮递员错误请求错误

问题描述

我一直在尝试向 Postman 上的服务器发送发布请求。但是我一直收到 400 Bad Request 错误错误描述为“由于语法错误,无法完成请求。”但是,我的 JSON 正文没有任何错误的语法,其他类似的问题不包括语法正确时发生的此错误

enter image description here

这是标题的样子:

enter image description here

发生这种情况的原因可能是什么?

编辑: 这是服务端的代码

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);
});

解决方法

哇,愚蠢的错误。我终于找到了答案!答案是在我的 mongoose.connect 行中,我将“文章”放在“mongodb://127.0.0.1:27017/”之后的“文章”中。

从 Danny 的评论中,我意识到“400 Bad Request”错误描述有点误导。这让我最初认为问题出在我发送的 JSON 主体上,即它的语法。但这可能不是问题。

因此,我再次检查了我的 save 方法是否是导致它始终默认为 catch 语句的问题。但是,这似乎也不是问题。

最后,我发现问题其实很简单。我不小心在 mongoose.connect 行中放入了“articles”而不是“article”。

故事的寓意:Postman 上显示的“400 Bad Request”错误可能具有误导性,问题可能不在于您作为请求传入的 JSON 正文的语法。