1.项目介绍
ASP.NET Core 支持两种创建 API 的方法:基于控制器的方法和最小 API。
- API 项目中的控制器是派生自 ControllerBase 的类。
- 最小 API 在 Lambda 或方法中使用逻辑处理程序定义终结点。
这里的最小API用的相对较少,所以我们使用基于控制器的方法。
Web API 中的控制器是派生自 ControllerBase 的类。 控制器按请求激活和释放。
2.ControllerBase 类
基于控制器的 Web API 包含一个或多个派生自 ControllerBase 的控制器类。 Web API 项目模板提供了一个入门版控制器:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Web API 控制器通常应派生自 ControllerBase 而不是 Controller。 Controller 派生自 ControllerBase,并添加对视图的支持,因此它用于处理 Web 页面,而不是 Web API 请求。
如果同一控制器必须支持视图和 Web API,则派生自 Controller。
3.特性
Microsoft.AspNetCore.Mvc 命名空间提供可用于配置 Web API 控制器的行为和操作方法的属性。
特性 | 说明 |
---|---|
Route | 指定控制器或操作的 URL 模式。 |
Bind | 指定要包含的前缀和属性,以进行模型绑定。 |
HttpGet | 标识支持 HTTP GET 操作谓词的操作。 |
Consumes | 指定某个操作接受的数据类型。 |
Produces | 指定某个操作返回的数据类型。 |
有关包含可用属性的列表,请参阅 Microsoft.AspNetCore.Mvc 命名空间。
4.ApiController 属性
[ApiController]
属性可应用于控制器类,以启用下述 API 特定的固定行为:
- 属性路由要求
- 自动 HTTP 400 响应
- 绑定源参数推理
- Multipart/form-data 请求推理
- 错误状态代码的问题详细信息