您的位置:首页 > 编程语言 > ASP

ASP.NET Core Web API 最小化项目

2017-07-07 07:46 1021 查看
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.cnblogs.com/linezero/p/7121925.html

.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: