env-manage-plugin
Version:
A dev env plugin that integrates an Express server with request proxying capabilities.
178 lines (177 loc) • 6.75 kB
JavaScript
import { envLogger } from "../utils/logger.js";
/**
* 环境控制器
* 负责处理与环境相关的HTTP请求,作为请求入口层:
* - 解析并验证请求参数
* - 调用对应的服务层方法处理业务逻辑
* - 格式化并返回响应结果
* - 统一错误处理
*/
class EnvController {
/**
* 构造函数 - 注入环境服务实例
* @param private readonly envService - 环境服务实例,处理核心业务逻辑
*/
constructor(envService) {
this.envService = envService;
}
/**
* 新增环境
* @description 处理创建新环境的POST请求
* @param req - Express请求对象,包含待创建的环境数据(在req.dto中)
* @param res - Express响应对象,用于返回处理结果
* @param next - Express下一步中间件函数,用于错误处理
*/
handleAddEnv(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收新增环境请求");
// 调用服务层处理业务
this.envService.handleAddEnv(envData);
// 返回成功响应
res.success();
}
catch (error) {
envLogger.error(error, "新增环境请求处理失败");
next(error);
}
}
/**
* 删除环境
* @description 处理删除环境的DELETE请求
* @param req - Express请求对象,包含待删除环境的ID(在req.dto中)
* @param res - Express响应对象,用于返回处理结果
* @param next - Express下一步中间件函数,用于错误处理
*/
handleDeleteEnv(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收删除环境请求");
// 调用服务层处理业务
this.envService.handleDeleteEnv(envData);
// 返回成功响应
res.success({ message: "环境删除成功" });
}
catch (error) {
envLogger.error(error, "删除环境请求处理失败");
next(error);
}
}
/**
* 更新环境
* @description 处理更新环境信息的PUT请求
* @param req - Express请求对象,包含待更新的环境数据(在req.dto中)
* @param res - Express响应对象,用于返回处理结果
* @param next - Express下一步中间件函数,用于错误处理
*/
handleUpdateEnv(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收更新环境请求");
// 调用服务层处理业务
this.envService.handleUpdateEnv(envData);
// 返回成功响应
res.success({ message: "环境更新成功" });
}
catch (error) {
envLogger.error(error, "更新环境请求处理失败");
next(error);
}
}
/**
* 获取环境列表
* @description 处理查询所有环境的GET请求
* @param req - Express请求对象
* @param res - Express响应对象,用于返回环境列表
* @param next - Express下一步中间件函数,用于错误处理
*/
handleGetList(req, res, next) {
try {
envLogger.info("接收环境列表查询请求");
// 调用服务层获取数据
const list = this.envService.handleGetList();
// 返回成功响应(包含列表数据)
res.success({ list, total: list.length });
}
catch (error) {
envLogger.error(error, "环境列表查询请求处理失败");
next(error);
}
}
/**
* 获取单个环境详情
* @description 处理查询指定环境的GET请求
* @param req - Express请求对象,包含待查询环境的ID(在req.dto中)
* @param res - Express响应对象,用于返回环境详情
* @param next - Express下一步中间件函数,用于错误处理
*/
handleGetDetail(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收环境详情查询请求");
// 调用服务层获取数据(假设服务层有此方法)
const detail = this.envService.findOneById(envData.id);
if (!detail) {
res.error("环境不存在");
}
// 返回成功响应(包含详情数据)
res.success({
message: "环境详情查询成功",
data: detail,
});
}
catch (error) {
envLogger.error(error, "环境详情查询请求处理失败");
next(error);
}
}
/**
* 启动代理服务器
* @description 处理启动指定环境代理服务的POST请求
* @param req - Express请求对象,包含目标环境的ID(在req.dto中)
* @param res - Express响应对象,用于返回处理结果
* @param next - Express下一步中间件函数,用于错误处理
*/
async handleStartServer(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收启动代理服务器请求");
// 调用服务层处理业务(异步操作)
await this.envService.handleStartServer(envData);
// 返回成功响应
res.success();
}
catch (error) {
envLogger.error(error, "启动代理服务器请求处理失败");
next(error);
}
}
/**
* 停止代理服务器
* @description 处理停止指定环境代理服务的POST请求
* @param req - Express请求对象,包含目标环境的ID(在req.dto中)
* @param res - Express响应对象,用于返回处理结果
* @param next - Express下一步中间件函数,用于错误处理
*/
async handleStopServer(req, res, next) {
try {
// 验证请求数据
const envData = req.dto;
envLogger.info({ envData }, "接收停止代理服务器请求");
// 调用服务层处理业务(异步操作)
await this.envService.handleStopServer(envData);
// 返回成功响应
res.success({ message: "代理服务器停止成功" });
}
catch (error) {
envLogger.error(error, "停止代理服务器请求处理失败");
next(error);
}
}
}
export { EnvController };