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 文件内容如下:
<ProjectSdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp1.1</TargetFramework></PropertyGroup><ItemGroup><FolderInclude="wwwroot\"/></ItemGroup><ItemGroup><PackageReferenceInclude="Microsoft.ApplicationInsights.AspNetCore"Version="2.0.0"/><PackageReferenceInclude="Microsoft.AspNetCore"Version="1.1.2"/><PackageReferenceInclude="Microsoft.AspNetCore.Mvc"Version="1.1.3"/><PackageReferenceInclude="Microsoft.Extensions.Logging.Debug"Version="1.1.2"/></ItemGroup><ItemGroup><DotNetCliToolReferenceInclude="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文件如下:
<ProjectSdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>netcoreapp1.1</TargetFramework></PropertyGroup><ItemGroup><FolderInclude="wwwroot\"/></ItemGroup><ItemGroup><PackageReferenceInclude="Microsoft.AspNetCore"Version="1.1.2"/><PackageReferenceInclude="Microsoft.AspNetCore.Mvc.Core"Version="1.1.3"/><PackageReferenceInclude="Microsoft.AspNetCore.Mvc.Formatters.Json"Version="1.1.3"/><PackageReferenceInclude="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]")]publicclassValuesController{//GETapi/values[HttpGet]publicIEnumerable<string>Get(){returnnewstring[]{"linezero","linezero'sblog"};}//GETapi/values/5[HttpGet("{id}")]publicstringGet(intid){return"linezero"+id;}//POSTapi/values[HttpPost]publicvoidPost([FromBody]stringvalue){}//PUTapi/values/5[HttpPut("{id}")]publicvoidPut(intid,[FromBody]stringvalue){}//DELETEapi/values/5[HttpDelete("{id}")]publicvoidDelete(intid){}}
重点是去掉默认的继承Controller。
如果你有其他的需求如跨域,数据验证,可以再添加对应的NuGet包。
Microsoft.AspNetCore.Mvc.Cors 跨域 对应的在services.AddMvcCore().AddJsonFormatters().AddCors();
Microsoft.AspNetCore.Mvc.DataAnnotations 数据验证属性。AddDataAnnotations();
运行程序,使用调试功能,VS2017 会自动打开浏览器并访问对应的api/values,显示如下:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。