ApiController 是什么,怎么用

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

image

使用示例

[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() 渲染页面,就千万别加。

 

posted @ 2025-09-19 18:01  yinghualeihenmei  阅读(68)  评论(0)    收藏  举报