C# Webapi中[ApiController]特性的功能,即使用

第一:背景:

之前对这个特性一知半解,了解的不够深入,在试用期的工作中,问到这个特性,需要深入了解

第二个:正文,作用及使用

//[ApiController]
    //启用下述 API 特定的固定行为:
    /*
     * •特性路由要求
      不能通过由 Startup.Configure 中的 UseEndpoints、UseMvc 或 UseMvcWithDefaultRoute 定义的传统路由访问操作。即写[Route()]
       •自动 HTTP 400 响应
      使模型验证错误自动触发 HTTP 400 响应
       •绑定源参数推理
      [ApiController] 特性将推理规则应用于操作参数的默认数据源。 
      借助这些规则,无需通过将属性应用于操作参数来手动识别绑定源。 绑定源推理规则的行为如下:
      [FromBody],[FromForm],[FromRoute],[FromQuery],
      额外推理规则[FromServies],[FromHeader]
       •Multipart/form-data 请求推理
      使用 [FromForm] 属性批注操作参数时,将推断 multipart/form-data 请求内容类型。
      •错误状态代码的问题详细信息
      当兼容性版本为 2.2 或更高版本时,MVC 会将错误结果(状态代码为 400 或更高的结果)转换为状态代码为 ProblemDetails 的结果。
      ProblemDetails 类型基于 RFC 7807 规范,用于提供 HTTP 响应中计算机可读的错误详细信息。

关于它的使用,

使用范围:

一个控制器,多个控制器,应用程序级别的

特定控制器上的属性Attribute on specific controllers

[ApiController] 属性可应用于特定控制器,如项目模板中的以下示例所示:The [ApiController] attribute can be applied to specific controllers, as in the following example from the project template:

C#复制

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

C#复制

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase

多个控制器上的属性Attribute on multiple controllers

在多个控制器上使用该属性的一种方法是创建通过 [ApiController] 属性批注的自定义基控制器类。One approach to using the attribute on more than one controller is to create a custom base controller class annotated with the [ApiController] attribute. 下述示例展示了自定义基类以及从其派生的控制器:The following example shows a custom base class and a controller that derives from it:

C#复制

[ApiController]
public class MyControllerBase : ControllerBase
{
}

C#复制

[Produces(MediaTypeNames.Application.Json)]
[Route("[controller]")]
public class PetsController : MyControllerBase

C#复制

[Produces(MediaTypeNames.Application.Json)]
[Route("api/[controller]")]
public class PetsController : MyControllerBase

程序集上的属性Attribute on an assembly

如果将兼容性版本设置为 2.2 或更高版本,则 [ApiController] 属性可应用于程序集。If compatibility version is set to 2.2 or later, the [ApiController] attribute can be applied to an assembly. 以这种方式进行注释,会将 web API 行为应用到程序集中的所有控制器。Annotation in this manner applies web API behavior to all controllers in the assembly. 无法针对单个控制器执行选择退出操作。There's no way to opt out for individual controllers. 将程序集级别的属性应用于 Startup 类两侧的命名空间声明:Apply the assembly-level attribute to the namespace declaration surrounding the Startup class:

C#复制

[assembly: ApiController]
namespace WebApiSample
{
    public class Startup
    {
        ...
    }
}

如:

详细见官方文档,https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-3.1#apicontroller-attribute

重要的事情说三遍:看官方文档,看官方文档,看官方文档

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于C# Web API接口开发,有以下一些常见的步骤和注意事项: 1. 创建一个新的C# Web API项目:使用Visual Studio或其他适合的IDE,创建一个新的C# Web API项目。 2. 定义和设计接口:根据您的需求,确定接口的功能和数据结构。设计良好的接口能够提高代码的可读性和可维护性。 3. 实现控制器:在项目创建控制器类,控制器类负责处理HTTP请求并返回响应。您可以使用ASP.NET Core框架的[ApiController]特性来简化一些操作。 4. 定义路由:使用ASP.NET Core框架的路由特性(如[HttpGet]、[HttpPost]等)来定义API的路由地址和请求方法。 5. 实现业务逻辑:在控制器实现具体的业务逻辑,可以调用其他服务、数据库或外部API来完成相关操作。 6. 处理数据验证和错误处理:在API接口进行输入数据的验证,并合理处理可能发生的错误,返回合适的HTTP状态码和错误信息。 7. 编写单元测试:编写单元测试来验证API接口的正确性和稳定性,可以使用xUnit、NUnit等测试框架进行单元测试。 8. 部署和发布:将API应用程序部署到适当的环境,可以是本地IIS、云服务(如Azure、AWS)等。 需要注意的是,C# Web API开发应该考虑安全性、性能和可扩展性等方面的需求,同时也要遵循良好的编码规范和最佳实践来提高代码质量。 希望以上信息对您有所帮助!如果您还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值