115 lines
2.6 KiB
JavaScript
115 lines
2.6 KiB
JavaScript
/**
|
||
* 统一响应工具函数
|
||
* 规范所有接口的返回数据格式
|
||
*/
|
||
|
||
/**
|
||
* 成功响应
|
||
* @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
|
||
};
|