using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.WebApi.Controllers;
/// <summary>
/// 拦截规则管理
/// </summary>
[ApiController, Route("api/[controller]"), Authorize(nameof(Permissions.System))]
public class InterceptRuleController(IInterceptRuleAdminService interceptRuleAdminService)
: ControllerBase
{
/// <summary>
/// 获取全部拦截规则
/// </summary>
/// <returns></returns>
[HttpGet]
[ProducesResponseType<List<InterceptRuleResponse>>(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> GetRules()
{
var rules = await interceptRuleAdminService.GetAllAsync();
return Ok(rules);
}
/// <summary>
/// 新增拦截规则
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> AddRule([FromBody] InterceptRuleSaveRequest request)
{
await interceptRuleAdminService.AddAsync(request);
return NoContent();
}
/// <summary>
/// 编辑拦截规则
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPut]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> UpdateRule([FromBody] InterceptRuleEditRequest request)
{
await interceptRuleAdminService.UpdateAsync(request);
return NoContent();
}
/// <summary>
/// 删除拦截规则
/// </summary>
/// <param name="id">拦截规则 Id</param>
/// <returns></returns>
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> DeleteRule(string id)
{
await interceptRuleAdminService.DeleteAsync(id);
return NoContent();
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
代码说明
这是一个基于 ASP.NET Core 的 Web API 控制器,用于管理系统的拦截规则功能。下面是详细解释:
📋 控制器概览
[ApiController, Route("api/[controller]"), Authorize(nameof(Permissions.System))]
public class InterceptRuleController(IInterceptRuleAdminService interceptRuleAdminService)
: ControllerBase
关键特性:
[ApiController]: 启用 API 特定的行为(如自动模型验证、自动 HTTP 400 响应等)Route("api/[controller]"): 定义路由为api/InterceptRule[Authorize(nameof(Permissions.System))]: 需要系统权限才能访问此控制器的所有接口- 依赖注入: 通过主构造函数注入
IInterceptRuleAdminService服务
🔧 API 接口详解
1️⃣ 获取全部拦截规则 (GET)
[HttpGet]
- 路径:
GET /api/InterceptRule - 功能: 查询所有拦截规则
- 返回:
200 OK- 返回List<InterceptRuleResponse>401 Unauthorized- 未授权
2️⃣ 新增拦截规则 (POST)
[HttpPost]
public async Task<IActionResult> AddRule([FromBody] InterceptRuleSaveRequest request)
- 路径:
POST /api/InterceptRule - 功能: 创建新的拦截规则
- 参数: 从请求体接收
InterceptRuleSaveRequest对象 - 返回:
204 NoContent- 创建成功400 BadRequest- 请求参数错误401 Unauthorized- 未授权
3️⃣ 编辑拦截规则 (PUT)
[HttpPut]
public async Task<IActionResult> UpdateRule([FromBody] InterceptRuleEditRequest request)
- 路径:
PUT /api/InterceptRule - 功能: 更新现有的拦截规则
- 参数: 从请求体接收
InterceptRuleEditRequest对象 - 返回: 同新增接口
4️⃣ 删除拦截规则 (DELETE)
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteRule(string id)
- 路径:
DELETE /api/InterceptRule/{id} - 功能: 根据 ID 删除指定拦截规则
- 参数: 从路由获取规则 ID
- 返回:
204 NoContent- 删除成功401 Unauthorized- 未授权
🎯 设计特点
- RESTful 风格: 遵循标准 HTTP 动词(GET/POST/PUT/DELETE)
- 异步操作: 所有方法都使用
async/await提高性能 - 明确的响应类型: 使用
ProducesResponseType标注,便于生成 API 文档(如 Swagger) - 统一权限控制: 控制器级别的授权保护
- 依赖注入: 遵循 SOLID 原则,便于测试和维护
📦 依赖项
IInterceptRuleAdminService: 拦截规则的业务逻辑服务InterceptRuleSaveRequest: 新增请求模型InterceptRuleEditRequest: 编辑请求模型InterceptRuleResponse: 响应模型
AI 正在分析代码…
评论加载中...