rentease-backend-new/utils/response.js

115 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

2026-04-22 06:48:32 +00:00
/**
* 统一响应工具函数
* 规范所有接口的返回数据格式
*/
/**
* 成功响应
* @param {object} res - Express响应对象
* @param {string} message - 成功消息
* @param {any} data - 响应数据
* @param {number} statusCode - HTTP状态码默认200
*/
const success = (res, message = '操作成功', data = null, statusCode = 200) => {
res.status(statusCode).json({
code: 200,
message,
data
});
};
/**
* 错误响应
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
* @param {number} code - 错误码默认500
* @param {number} statusCode - HTTP状态码默认对应code
*/
const error = (res, message = '操作失败', code = 500, statusCode = null) => {
const httpStatus = statusCode || code;
res.status(httpStatus).json({
code,
message,
data: null
});
};
/**
* 参数错误响应 (400)
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
*/
const badRequest = (res, message = '请求参数错误') => {
error(res, message, 400);
};
/**
* 未授权响应 (401)
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
*/
const unauthorized = (res, message = '未授权,请先登录') => {
error(res, message, 401);
};
/**
* 禁止访问响应 (403)
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
*/
const forbidden = (res, message = '没有权限执行此操作') => {
error(res, message, 403);
};
/**
* 资源不存在响应 (404)
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
*/
const notFound = (res, message = '资源不存在') => {
error(res, message, 404);
};
/**
* 服务器错误响应 (500)
* @param {object} res - Express响应对象
* @param {string} message - 错误消息
* @param {Error} err - 错误对象仅在开发环境返回
*/
const serverError = (res, message = '服务器内部错误', err = null) => {
const response = {
code: 500,
message,
data: null
};
// 开发环境下返回错误详情
if (process.env.NODE_ENV === 'development' && err) {
response.error = err.message;
response.stack = err.stack;
}
res.status(500).json(response);
};
/**
* 创建成功响应 (201)
* @param {object} res - Express响应对象
* @param {string} message - 成功消息
* @param {any} data - 响应数据
*/
const created = (res, message = '创建成功', data = null) => {
success(res, message, data, 201);
};
module.exports = {
success,
error,
badRequest,
unauthorized,
forbidden,
notFound,
serverError,
created
};