没有语法错误时的 Postman Bad Request 错误

Postman Bad Request Error When There Is No Syntax Error

我一直在尝试向 Postman 上的服务器发送 post 请求。但是我一直收到 400 Bad Request Error。错误的描述是“由于语法错误,请求无法完成。”但是我的JSONbody并没有语法错误,其他类似的问题不包括语法正确时出现的这个错误。

这是 headers 的样子:

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

编辑: 这是服务器端的代码:

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 行中,我把“articles”放在“mongodb://127.0.0.1:27017/”之后,而它应该是“article”。

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

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

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

故事的寓意:Postman 上显示的“400 Bad Request”错误可能具有误导性,问题可能与您传入的 JSON 正文的语法无关根据要求。

  • 有时可能会犯一些愚蠢的错误,比如在 应该是 post 请求。
  • 其他时候正文中的语法可能不正确。
  • 或者如上所述,端点打字错误。