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

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

2017-04-01 21:27 495 查看


Getting Started

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

在 GitHub 中的 ASP.NET 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()
 的源码:
public static IMvcBuilder AddMvc(this IServiceCollection services)
{
var builder = services.AddMvcCore();

builder.AddApiExplorer();
builder.AddAuthorization();

AddDefaultFrameworkParts(builder.PartManager);

// Order added affects options setup order

// Default framework order
builder.AddFormatterMappings();
builder.AddViews();
builder.AddRazorViewEngine();
builder.AddCacheTagHelper();

// +1 order
builder.AddDataAnnotations(); // +1 order

// +10 order
builder.AddJsonFormatters();

builder.AddCors();

return new MvcBuilder(builder.Services, builder.PartManager);
}


简单 Web Api

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

首先,不需要引用 
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 添加里面。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddJsonFormatters();
}


最后一点就是,你的 XXXController 类中要继承 
ControllerBase
 而不是 
Controller

ControllerBase 里面没有提供任何关于对 Views 的支持。
public class XXXController: ControllerBase
{
}


下面是最终的 project.json 引用的所有程序包。
"dependencies": {
"Microsoft.NETCore.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.Extensions.Configuration.CommandLine": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐