rentease-backend-new/utils/response.js

115 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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