2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 在ASP.NET Core MVC中构建简单 Web Api

在ASP.NET Core MVC中构建简单 Web Api

时间:2019-07-21 08:16:19

相关推荐

在ASP.NET Core MVC中构建简单 Web Api

Getting Started

在 Core MVC 框架中, 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 Web Api 程序怎么办呢?

在 GitHub 中的 Core MVC 源码里面,我们只要关注Microsoft.AspNetCore.Mvc这个包,那么除了这个包之外它还包含这些:

Microsoft.AspNetCore.Mvc.ApiExplorer

Microsoft.AspNetCore.Mvc.Cors

Microsoft.AspNetCore.Mvc.DataAnnotations

Microsoft.AspNetCore.Mvc.Formatters.Json

Microsoft.AspNetCore.Mvc.Localization

Microsoft.AspNetCore.Mvc.Razor

Microsoft.AspNetCore.Mvc.TagHelpers

Microsoft.AspNetCore.Mvc.ViewFeatures

Microsoft.Extensions.Caching.Memory

Microsoft.Extensions.DependencyInjection

NETStandard.Library

通常情况下,我们在创建一个 Web MVC 网站的时候,会在 Startup.cs 文件中的ConfigureServices方法中,这样添加:

services.AddMvc();

以上的代码会将 MVC 中的服务注入到 DI 容器中,我们来看一下AddMvc()的源码:

publicstaticIMvcBuilderAddMvc(thisIServiceCollectionservices){varbuilder=services.AddMvcCore();builder.AddApiExplorer();builder.AddAuthorization();AddDefaultFrameworkParts(builder.PartManager);//Orderaddedaffectsoptionssetuporder//Defaultframeworkorderbuilder.AddFormatterMappings();builder.AddViews();builder.AddRazorViewEngine();builder.AddCacheTagHelper();//+1orderbuilder.AddDataAnnotations();//+1order//+10orderbuilder.AddJsonFormatters();builder.AddCors();returnnewMvcBuilder(builder.Services,builder.PartManager);}

简单 Web Api

实际上,如果想构建一个简单 Web Api 程序的话, 团队已经为我们想到了这一点,所以我们只需要修改我们注入的服务。

首先,不需要引用Microsoft.AspNetCore.Mvc这个包了,转而引用Microsoft.AspNetCore.Mvc.Core。 Mvc.Core 这个包只会给你提供基本的 MVC 中间件,比如路由,Controller, HttpResult 等,其他更多的如关于 Razor,Cores,Views 等则没有提供。

在 Web Api 应用中,大多数情况下是以 Json 进行数据序列化传输的,所以需要添加Microsoft.AspNetCore.Mvc.Formatters.Json这个包。

然后,在ConfigureServices,将 Mvc Core 中间件和 Json Formatter 添加里面。

publicvoidConfigureServices(IServiceCollectionservices){services.AddMvcCore().AddJsonFormatters();}

最后一点就是,你的 XXXController 类中要继承ControllerBase而不是Controller。 ControllerBase 里面没有提供任何关于对 Views 的支持。

publicclassXXXController:ControllerBase{}

下面是最终的 project.json 引用的所有程序包。

"dependencies":{"Core.App":{"version":"1.1.0","type":"platform"},"Microsoft.AspNetCore.Mvc.Core":"1.1.0","Microsoft.AspNetCore.Mvc.Formatters.Json":"1.1.0","Microsoft.AspNetCore.Server.IISIntegration":"1.1.0","Microsoft.AspNetCore.Server.Kestrel":"1.1.0","Microsoft.Extensions.Configuration.EnvironmentVariables":"1.1.0","Microsoft.Extensions.Configuration.FileExtensions":"1.1.0","Microsoft.Extensions.Configuration.Json":"1.1.0","Microsoft.mandLine":"1.1.0","Microsoft.Extensions.Logging":"1.1.0","Microsoft.Extensions.Logging.Console":"1.1.0","Microsoft.Extensions.Logging.Debug":"1.1.0"}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。