使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action

Demo

下面我们就来实践一下。打开之前的项目,并建立CompaniesController 

使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action_第1张图片

这里有6个地方比较关键,我们挨个看一下: 

  1. RESTful API 或者其它Web APIController都应该继承于 ControllerBase 这个类(点此查看详细的官方文档),而不是Controller这个类。 

    1.  

    2. ControllerBase 类提供了很多用于处理 HTTP 请求的属性和方法。 例如,ControllerBase.CreatedAtAction 返回 201 状态代码。关于ControllerBase的属性和方法的详细列表,请查看官方参考文档 

  2. [ApiController]。这个属性是应用于Controller的,它其实并不是强制的,但是它提供了一些帮助,使得Web API的开发体验更好。详细教程请点击 [ApiController]的官方文档。在Controller上面添加了[ApiController]属性之后,就会启用以下行为: 

    1. 要求使用属性路由(Attribute Routing)。也就是不能通过StartupConfigure方法统一配置路由模板。这部分的详细介绍请点击:官方文档 

    2. 自动HTTP 400响应。也就是Action方法传入的model含有验证错误的时候,自动触发HTTP 400响应。这部分的详细介绍请点击:官方文档 

    3. 推断参数的绑定源。它将会推断出Action方法的参数到底来自哪个绑定源,例如[FromBody][FromForm]等等。这部分的详细介绍请点击:官方文档 

    4. Multipart/form-data 请求推断使用 [FromForm] 属性批注操作参数时,[ApiController] 属性应用推断规则,它会推断 multipart/form-data 请求内容类型。这部分的详细介绍请点击:官方文档 

    5. 错误状态代码的问题详细信息MVC 会将错误结果(状态代码为 400 或更高的结果)转换为状态代码为 ProblemDetails 的结果。 ProblemDetails 类型基于 RFC 7807 规范,用于提供 HTTP 响应中计算机可读的错误详细信息。这部分的详细介绍请点击:官方文档 

  3. 我们需要通过构造函数注入ICompanyRepository,并把它存放在一个只读的字段里面。 

  4. 如果注入的ICompanyRepository的实例为null,那么就抛出一个ArgumentNullException 

  5. 想要返回数据结果,我们需要在Controller里面添加一个Action方法。我暂时把它的返回类型写为IActionResult(详细介绍请点击官方文档)。IActionResult里面定义了一些合约,它们可以代表Action方法返回的结果。 

  6. 我暂时只想把结果序列化为JSON格式并返回,这里我new了一个JsonResult参考文档),它可以做这项工作。 

 

目前我只做了这几项最基本的工作:创建Controller,注入Repository,创建Action方法并返回结果。下面运行一下看看报了什么错: 

使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action_第2张图片

这是因为GetCompanies这个Action方法并没有使用属性路由(Attribute Routing)。关于路由这部分,下一篇文章再介绍。 

点击原文查看博客园的博文,主要是里面有文档的链接.

你可能感兴趣的:(使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action)