首頁 > 軟體

ASP.NET Core Web API 最小化專案

2020-06-16 17:10:28

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 可以讓你靈活的使用想要使用的。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145498.htm


IT145.com E-mail:sddin#qq.com