• ASP.NET Core Web API 最小化项目


    ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目。

    有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化。通过删除无用的NuGet软件包和代码,可以提高 API 的加载时间并减少部署包大小。

    新建项目

    打开VS2017 新建一个ASP.NET Core 应用程序 (.NET Core)项目,命名为miniwebapi。确定后选择Web API 模板,并将“身份验证”设置为“不进行身份验证”。

    然后确定就创建好了项目,默认项目的csproj 文件内容如下:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp1.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot" />
      </ItemGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
        <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
        <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
      </ItemGroup>
      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
      </ItemGroup>
    
    </Project>

    删除NuGet包

    首先删除掉  Microsoft.AspNetCore.Mvc。

    其实  Microsoft.VisualStudio.Web.CodeGeneration.Tools 及也可以删除 Microsoft.ApplicationInsights.AspNetCore 。

    接着添加

    • Microsoft.AspNetCore.Mvc.Core
    • Microsoft.AspNetCore.Mvc.Formatters.Json

    最终miniwebapi.csproj文件如下:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp1.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot" />
      </ItemGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="1.1.3" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="1.1.3" />
        <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
      </ItemGroup>
    
    </Project>

     其实Microsoft.Extensions.Logging.Debug  如果不需要也可以删除,这里做了一个保留。

    配置服务

    对于移除了Microsoft.ApplicationInsights.AspNetCore 的,需要在Program.cs 中去掉.UseApplicationInsights()

    接着打开Startup.cs 文件,在ConfigureServices 方法中去掉 services.AddMvc();

    然后改成如下:

    services.AddMvcCore().AddJsonFormatters();

    接着打开默认的ValuesController.cs 更改成如下:

        [Route("api/[controller]")]
        public class ValuesController
        {
            // GET api/values
            [HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "linezero", "linezero's blog" };
            }
    
            // GET api/values/5
            [HttpGet("{id}")]
            public string Get(int id)
            {
                return "linezero"+id;
            }
    
            // POST api/values
            [HttpPost]
            public void Post([FromBody]string value)
            {
            }
    
            // PUT api/values/5
            [HttpPut("{id}")]
            public void Put(int id, [FromBody]string value)
            {
            }
    
            // DELETE api/values/5
            [HttpDelete("{id}")]
            public void Delete(int id)
            {
            }
        }

    重点是去掉默认的继承 Controller。

    如果你有其他的需求如跨域,数据验证,可以再添加对应的NuGet包。

    Microsoft.AspNetCore.Mvc.Cors 跨域 对应的在services.AddMvcCore().AddJsonFormatters().AddCors();

    Microsoft.AspNetCore.Mvc.DataAnnotations 数据验证属性。AddDataAnnotations();

    测试

    运行程序,使用调试功能,VS2017 会自动打开浏览器并访问对应的api/values,显示如下:

    表示接口能够成功访问。

    这样你可以只使用所需的功能,从而减少加载时间。ASP.NET Core 可以让你灵活的使用想要使用的。

    如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

  • 相关阅读:
    golang压力测试工具
    Gnome启动
    简单说说 Apipost 的几点使用体验
    发现一个很nice的API调试工具!
    马勒第一交响曲
    Python中使用tkinter创建透明图层、不规则组件、插入GIF动图等功能实现
    RESTful API Knife4j
    汇编语言与DOSBOX使用
    VPP初学笔记(一)
    Python3下如何对文件进行操作?
  • 原文地址:https://www.cnblogs.com/linezero/p/7121925.html
Copyright © 2020-2023  润新知