ASP.NET Core Web API 最小化项目

时间:2022-06-25 09:06:22

标签:asp

新建项目

打开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,显示如下:

表示接口能够成功访问。