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

Express如何实现统一格式的自定义JSON响应中间件

实现方案

完全可以通过自定义中间件实现,核心思路是在请求处理流程中提前给res对象挂载统一格式化的响应方法,所有路由直接调用该方法即可,后续要调整格式只需要修改中间件里的逻辑一处就够。

步骤1:编写统一响应中间件

// 自定义响应中间件
const responseFormatter = (req, res, next) => {
  // 挂载通用响应方法到res对象
  res.sendRes = ({ message = '操作成功', type = 'success', payload = null, statusCode = 200 }) => {
    res.status(statusCode).json({
      message,
      type,
      payload
    })
  }

  // 可按需扩展快捷调用方法,减少业务层重复代码
  // 成功响应快捷方法
  res.success = (payload, message = '操作成功') => {
    res.sendRes({ payload, message })
  }

  // 失败响应快捷方法
  res.fail = (message = '操作失败', payload = null, statusCode = 400) => {
    res.sendRes({ type: 'error', message, payload, statusCode })
  }

  next()
}

步骤2:注册中间件

注意必须在路由注册之前挂载该中间件,才能让所有路由拿到挂载的自定义方法:

const express = require('express')
const app = express()

// 先注册响应格式化中间件
app.use(responseFormatter)

// 再注册业务路由
app.get('/user', (req, res) => {
  // 成功场景直接调用快捷方法
  res.success({ id: 1, username: 'zhangsan' }, '用户信息查询成功')
})

app.post('/user', (req, res) => {
  // 异常场景直接调用失败方法
  if (!req.body.username) {
    return res.fail('缺少必填参数username')
  }
  res.success(null, '用户创建成功')
})

方案优势

  • 响应格式统一收口到中间件维护,后续调整格式、新增字段仅需要修改sendRes方法一处,无需改动业务路由代码
  • 快捷方法减少业务层重复代码,降低参数写错的概率
  • 支持自定义状态码、默认参数兜底,兼容各类正常、异常响应场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:03