ApiController 是什么,怎么用
ApiController 是 ASP.NET Core(以及 ASP.NET Web API)框架中的一个关键特性,用于标识一个类是专门处理 HTTP API 请求的控制器。它简化了控制器的配置,并启用了许多专门针对 RESTful API 的行为。

使用示例
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult GetUser(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
return NotFound();
return Ok(user);
}
[HttpPost]
public IActionResult CreateUser([FromBody] UserDto dto)
{
// 不需要检查 ModelState.IsValid
// 如果 dto 无效,自动返回 400
var user = _userService.CreateUser(dto);
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
}
}
与 ControllerBase 的关系
-
必须继承自
ControllerBase(而不是Controller,后者用于 MVC 视图)。 -
ControllerBase提供了Ok(),NotFound(),BadRequest()等常用方法。
✅ 启用前提
在
Program.cs 中(.NET 6+):csharp
builder.Services.AddControllers(); // 自动识别 [ApiController]
✅ 总结一句话
[ApiController]是 ASP.NET Core 中用于构建 RESTful API 的“加速器”,它让控制器更简洁、行为更一致、错误更标准化。什么时候加?只要这个控制器“只打算返回数据(JSON/XML 等),不返回视图(Razor/Blazor 页面)”,就可以、也应该加[ApiController]。
反过来,一旦你要用return View()渲染页面,就千万别加。
浙公网安备 33010602011771号