【问题标题】:How to handle invalid json in express?如何处理快递中的无效json?
【发布时间】:2021-06-30 19:46:13
【问题描述】:

我想捕获无效的 json。例如,如果我收到"usern": "James" 而不是"username": "James"。我想回复400 状态码。

exports.create_user = async (req, res) => {
  const { username } = req.body;
  try {
    const user = await User.create({
      username: username,
    });
    res.status(201).json(user);
  } catch (error) {
    res.status(503).end();
  }
  res.status(400).json({ msg: "Syntax error" });
};

现在这并不能捕获无效的 json,我该怎么做?

【问题讨论】:

    标签: javascript node.js mongodb express try-catch


    【解决方案1】:
    exports.create_user = async (req, res) => {
      const { username } = req.body;
      if(!username) { // if username is falsy e.g: undefined|null
        res.status(400).json({ msg: "Syntax error" });
        return;
      }
      try {
        const user = await User.create({
          username: username,
        });
        res.status(201).json(user);
      } catch (error) {
        res.status(503).end();
      }
    };
    

    【讨论】:

    • 真的,没有更好的方法来处理这个问题吗?想象一下,如果我的主体中有 5 个键。
    • 您可以尝试使用 class-validator 或其他验证包,例如 joi 以使其更容易一些。
    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 2020-05-14
    • 2020-03-31
    • 2023-02-08
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多