zoukankan      html  css  js  c++  java
  • 在ASP.NET Core MVC中构建简单 Web Api

    Getting Started

    在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 Web Api 程序怎么办呢?

    在 GitHub 中的 ASP.NET Core MVC 源码里面,我们只要关注 Microsoft.AspNetCore.Mvc 这个包,那么除了这个包之外它还包含这些:

    • Microsoft.AspNetCore.Mvc.ApiExplorer
    • Microsoft.AspNetCore.Mvc.Cors
    • Microsoft.AspNetCore.Mvc.DataAnnotations
    • Microsoft.AspNetCore.Mvc.Formatters.Json
    • Microsoft.AspNetCore.Mvc.Localization
    • Microsoft.AspNetCore.Mvc.Razor
    • Microsoft.AspNetCore.Mvc.TagHelpers
    • Microsoft.AspNetCore.Mvc.ViewFeatures
    • Microsoft.Extensions.Caching.Memory
    • Microsoft.Extensions.DependencyInjection
    • NETStandard.Library

    通常情况下,我们在创建一个 Web MVC 网站的时候,会在 Startup.cs 文件中的 ConfigureServices 方法中,这样添加:

    
    services.AddMvc();
    
    

    以上的代码会将 MVC 中的服务注入到 DI 容器中,我们来看一下 AddMvc() 的源码:

    
    public static IMvcBuilder AddMvc(this IServiceCollection services)
    {
        var builder = services.AddMvcCore();
    
        builder.AddApiExplorer();
        builder.AddAuthorization();
    
        AddDefaultFrameworkParts(builder.PartManager);
    
        // Order added affects options setup order
    
        // Default framework order
        builder.AddFormatterMappings();
        builder.AddViews();
        builder.AddRazorViewEngine();
        builder.AddCacheTagHelper();
    
        // +1 order
        builder.AddDataAnnotations(); // +1 order
    
        // +10 order
        builder.AddJsonFormatters();
    
        builder.AddCors();
    
        return new MvcBuilder(builder.Services, builder.PartManager);
    }
    
    

    简单 Web Api

    实际上,如果想构建一个简单 Web Api 程序的话,ASP.NET 团队已经为我们想到了这一点,所以我们只需要修改我们注入的服务。

    首先,不需要引用 Microsoft.AspNetCore.Mvc 这个包了,转而引用 Microsoft.AspNetCore.Mvc.Core。 Mvc.Core 这个包只会给你提供基本的 MVC 中间件,比如路由,Controller, HttpResult 等,其他更多的如关于 Razor,Cores,Views 等则没有提供。

    在 Web Api 应用中,大多数情况下是以 Json 进行数据序列化传输的,所以需要添加 Microsoft.AspNetCore.Mvc.Formatters.Json 这个包。

    然后,在 ConfigureServices ,将 Mvc Core 中间件和 Json Formatter 添加里面。

    
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvcCore()
            .AddJsonFormatters();
    }
    
    

    最后一点就是,你的 XXXController 类中要继承 ControllerBase 而不是 Controller。 ControllerBase 里面没有提供任何关于对 Views 的支持。

    
    public class XXXController: ControllerBase
    {
    }
    
    

    下面是最终的 project.json 引用的所有程序包。

    "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.1.0",
          "type": "platform"
        },
        "Microsoft.AspNetCore.Mvc.Core": "1.1.0",
        "Microsoft.AspNetCore.Mvc.Formatters.Json": "1.1.0",
        "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
        "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
        "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
        "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
        "Microsoft.Extensions.Configuration.Json": "1.1.0",
        "Microsoft.Extensions.Configuration.CommandLine": "1.1.0",
        "Microsoft.Extensions.Logging": "1.1.0",
        "Microsoft.Extensions.Logging.Console": "1.1.0",
        "Microsoft.Extensions.Logging.Debug": "1.1.0"
    }
    

    本文地址:http://www.cnblogs.com/savorboard/p/6340451.html
    作者博客:Savorboard
    欢迎转载,请在明显位置给出出处及链接

  • 相关阅读:
    第二章、Java内存区域与内存溢出异常
    第二章、Java内存区域与内存溢出异常
    腾讯//格雷编码
    腾讯//格雷编码
    数据结构5.5_广义表的递归算法
    数据结构5.4_m元多项式的表示
    数据结构4.2_串操作应用举例_建立词索引表
    数据结构3_栈和队列
    数据结构2_线性表
    数据结构1_绪论
  • 原文地址:https://www.cnblogs.com/savorboard/p/6340451.html
Copyright © 2011-2022 走看看