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.CoreMicrosoft.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 可以让你灵活的使用想要使用的。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
ASP.NET Core Web API 最小化项目的更多相关文章
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- ASP.NET Core Web API 教程 - Project Configuration
ASP.NET Core Web API 教程 本系列文章主要参考了<Ultimate ASP.NET Core 3 Web API>一书,我对原文进行了翻译,同时适当删减.修改了一部分内 ...
- 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...
- ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目
一.前言 这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对自 ...
- List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac
List多个字段标识过滤 class Program{ public static void Main(string[] args) { List<T> list = new List& ...
- 【原创】Asp.NET Core Web API与Vue 3.0搭建前后分离项目
特地记录一下,网上的教程写的稀里糊涂的,整得我都心塞塞的,其实实现的过程蛮简单的 问题是这样的:我将Vue构建生成好的文件,放在后端wwwroot文件里面,并开启静态文件访问功能,结果总是无法显示相应 ...
- 从ASP.Net Core Web Api模板中移除MVC Razor依赖项
前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC VS WebApi (1)在ASP. ...
- 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)
对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...
- 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...
随机推荐
- 通过vmware 启动cloudera-quickstart-vm-5.10.0-0-vmware.zip镜像无法启动。
解压cloudera-quickstart-vm-5.10.0-0-vmware.zip中找到cloudera-quickstart-vm-5.10.0-0-vmware.vmx文件打开注释点#msg ...
- 用CSS3实现饼状loading效果
原文地址:http://visugar.com/2017/05/17/CSS3%E9%A5%BC%E7%8A%B6loading%E6%95%88%E6%9E%9C/ 写在前面 (附录有源码及效果) ...
- 关于JAVA自带MD5的方法
有空再详细解释 import java.security.MessageDigest; public class MD5 { public final static String MD51(Strin ...
- reshape: from long to wide format(转)
This is to continue on the topic of using the melt/cast functions in reshape to convert between long ...
- Vue.js中组件传参的方法 - 基于webpack模板
在Vuejs中, 组件之间的传参是今天第一次接触, 之前写的组件互相之间都是独立的, 弗敢专也, 必以分人 环境: node.js npm vue-cli 以上安装请自行百度 一.项目创建 $ vue ...
- angular实现的文字上下无缝滚动
最近在学习angularJs,业余时间随便写了一个文字上下无缝滚动的例子,主要写了一个小小的指令. css代码:主要控制样式 <style type="text/css"&g ...
- sql备份(导出脚本)
第一步: 右键需要备份的数据库(这里以MyDB为例)-->任务-->生成脚本
- java模拟报文
为了以后节约时间,记录下模拟报文的实现 模拟报文思路:就是后台把接口数据先写在文档里面写死,接口地址不变,在每个接口里面控制是访问的模拟报文还是数据库里面的数据, 对于前端来说所有都是不变的,就是说我 ...
- JQuery--Ajax 异步操作 动态添加节点 (新人试水,求支持)
异步操作动态添加节点,导致在代码中给添加的节点全局绑定事件或者获取元素无效,上代码: $(function () { var IP = '...'; // 页面中的默认编号起始值 和 公用IP前缀 s ...
- Activity常用的方法
1. View findViewById(int id) //根据组件ID取得组件对象setContentView(int LayoutResID) //设置布局文件,设置显示组件 2. TextVi ...