Controller 更像“标准化综合柜台”。它不是更高级,只是更适合中大型团队的组织方式。
[ApiController]
[Route("api/permits")]
public class PermitsController : ControllerBase
{
private readonly IPermitService _permitService;
private readonly ILogger<PermitsController> _logger;
public PermitsController(
IPermitService permitService,
ILogger<PermitsController> logger)
{
_permitService = permitService;
_logger = logger;
}
[HttpGet("{id:int}")]
public async Task<ActionResult<PermitDto>> GetById(int id)
{
var permit = await _permitService.GetByIdAsync(id);
if (permit is null)
{
return NotFound();
}
_logger.LogInformation("查询证照成功,PermitId={PermitId}", id);
return Ok(permit);
}
[HttpPost]
public async Task<ActionResult<PermitDto>> Create(CreatePermitRequest request)
{
var created = await _permitService.CreateAsync(request);
return CreatedAtAction(nameof(GetById), new { id = created.Id }, created);
}
}#Controller 的优势
- 结构清晰,约定明确。
- 适合多人协作。
- 更容易做分层、过滤器、特性标注、统一风格。
- 当 API 数量很多时,可维护性更强。
#Minimal API 和 Controller 怎么选
| 维度 | Minimal API | Controller |
|---|---|---|
| 上手速度 | 快 | 中 |
| 文件层次 | 少 | 明确 |
| 小型服务 | 很合适 | 可以 |
| 大型业务系统 | 可以,但容易散 | 更稳 |
| 团队协作 | 中 | 强 |
不是谁淘汰谁,而是枢纽里两种窗口模式并存。