You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Express.js中当请求体JSON无效时返回400响应

解决Express无效JSON请求体返回400而非抛错的问题

你可以通过两种方式实现需求:

方式一:给express.json()配置验证函数

直接在express.json()的选项里加verify参数,捕获解析错误并主动返回400响应:

import express from 'express'

const app = express()

app.use(express.urlencoded({ extended: false }))
// 自定义JSON解析的验证逻辑
app.use(express.json({
  verify: (req, res, buf) => {
    try {
      JSON.parse(buf)
    } catch (err) {
      res.status(400).json({ error: '无效的JSON格式' })
      throw err // 抛出错误让Express后续处理,也可直接调用res.end()结束响应
    }
  }
}))

方式二:添加全局错误处理中间件

如果不想修改express.json()的配置,可以在所有路由之后添加全局错误处理中间件,专门捕获JSON解析错误:

import express from 'express'

const app = express()

app.use(express.urlencoded({ extended: false }))
app.use(express.json())

// 你的其他路由定义...

// 全局错误处理中间件
app.use((err, req, res, next) => {
  // 判断是否是JSON解析错误
  if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
    return res.status(400).json({ error: '请求体不是有效的JSON格式' })
  }
  // 其他错误交给默认处理逻辑
  next(err)
})

两种方式都能实现当请求体是无效JSON时,返回400状态码和自定义错误信息,而非直接抛出未处理的错误。

内容的提问来源于stack exchange,提问作者kennarddh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:15:32