ASP.NET Core 2 WEB API - 依赖注入

ASP.NET Core 2 WEB API - Dependency Injection

当使用 WEB API(仅)时,API 控制器和普通 Web 控制器有区别吗?我的意思是当使用生命周期之一添加这样的服务时:

returns 网页控制器中的服务与 returns JSON REST 无状态控制器中的服务行为是否会有所不同?

是的,在 ASP.NET Core 之前,应用程序分为 ASP.NET MVC 和 ASP.NET Web API。

ASP.NET 核心已经改变了这一点。现在,这是一种用于处理请求的通用 MVC 方法(由 MVC 中间件表示),无论它们最终是 returning 数据还是视图。

生命周期不受影响,因为 "same" 管道实现针对所有请求执行。

例如,您可以创建定义为 return 动态响应数据的控制器操作:

    [HttpGet]
    public dynamic Index(int flag)
    {
        if (flag == 1) return new StatusCodeResult(200);
        if (flag == 2) return new { id = 1, Name = "some text" };
        else return View();
    }

所以取决于查询参数,它会returnJSON数据,只有状态码作为响应,或者View。在控制器实例创建期间(当某些依赖项可能通过 DI 解决时)框架还不知道将使用什么流程。