namespace Dpz.Core.WebApi.Controllers;
/// <summary>
/// 系统配置
/// </summary>
[ApiController, Route("api/[controller]")]
public class OptionController(IAppOptionService appOptionService) : ControllerBase
{
/// <summary>
/// 获取友情链接
/// </summary>
/// <returns></returns>
[HttpGet("friends")]
[ProducesResponseType<List<VmFriends>>(StatusCodes.Status200OK)]
public async Task<IActionResult> GetFriends()
{
var list = await appOptionService.GetFriendsAsync();
return Ok(list);
}
/// <summary>
/// 添加友情链接
/// </summary>
/// <returns></returns>
[HttpPost("friends")]
[Authorize(Policy = "System")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> AddFriend([FromBody] FriendSaveDto model)
{
var friend = new VmFriends
{
Avatar = model.Avatar,
Description = model.Description,
Link = model.Link,
Name = model.Name,
};
await appOptionService.AddFriendAsync(friend);
return NoContent();
}
/// <summary>
/// 编辑友情链接
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPatch("friends")]
[Authorize(Policy = "System")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> EditFriend([FromBody] FriendEditDto model)
{
var friend = new VmFriends
{
Avatar = model.Avatar,
Description = model.Description,
Link = model.Link,
Name = model.Name,
Id = model.Id,
};
await appOptionService.EditFriendAsync(friend);
return NoContent();
}
/// <summary>
/// 删除友情链接
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("friends/{id}")]
[Authorize(Policy = "System")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> DeleteFriend(string id)
{
await appOptionService.DeleteFriendAsync(id);
return NoContent();
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个基于 ASP.NET Core Web API 的控制器类,专门用于管理系统配置中的友情链接功能。让我详细解释一下这个代码:
类定义和依赖注入
[ApiController, Route("api/[controller]")]
public class OptionController(IAppOptionService appOptionService) : ControllerBase
- 使用了 C# 12 的主构造函数语法来注入
IAppOptionService依赖 [ApiController]特性提供了 API 控制器的默认行为- 路由模板
api/[controller]会解析为api/option
API 端点功能
1. 获取友情链接列表
[HttpGet("friends")]
- 路径:
GET /api/option/friends - 权限: 无需授权(公开访问)
- 功能: 获取所有友情链接
- 返回:
List<VmFriends>类型的友情链接列表
2. 添加友情链接
[HttpPost("friends")]
[Authorize(Policy = "System")]
- 路径:
POST /api/option/friends - 权限: 需要 "System" 策略授权
- 功能: 添加新的友情链接
- 参数: 从请求体接收
FriendSaveDto对象 - 返回: 204 No Content(成功)或 401 Unauthorized(未授权)
3. 编辑友情链接
[HttpPatch("friends")]
[Authorize(Policy = "System")]
- 路径:
PATCH /api/option/friends - 权限: 需要 "System" 策略授权
- 功能: 更新现有友情链接
- 参数: 从请求体接收
FriendEditDto对象(包含ID)
4. 删除友情链接
[HttpDelete("friends/{id}")]
[Authorize(Policy = "System")]
- 路径:
DELETE /api/option/friends/{id} - 权限: 需要 "System" 策略授权
- 功能: 根据ID删除友情链接
- 参数: 路径参数中的
id
设计特点
- 权限分离: 读取操作(GET)公开访问,写入操作(POST/PATCH/DELETE)需要系统级权限
- RESTful 设计: 遵循 REST API 设计原则,使用合适的 HTTP 动词
- 响应码规范: 使用
ProducesResponseType明确标注可能的响应状态码 - DTO 模式: 使用不同的 DTO 类型区分添加和编辑操作的数据结构
- 异步处理: 所有操作都是异步的,提高性能
这个控制器为前端提供了完整的友情链接 CRUD(创建、读取、更新、删除)功能,是一个典型的资源管理 API 实现。
AI 正在分析代码…
评论加载中...