ASP.NET Core MVCで簡単なWeb Apiを構築
3724 ワード
Getting Started
ASP.NET Core MVCフレームワークでは、ASP.NETチームは、Webのさまざまな部分を構築するために必要なスイートセットを提供していますが、簡単なWeb Apiプログラムを作る必要がある場合はどうすればいいのでしょうか.
GitHubでのASP.NET Core MVCソースコードには、
Microsoft.AspNetCore.Mvc
というパッケージに注目すれば、このパッケージのほかにも含まれています.通常、Web MVCのWebサイトを作成するときは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このパッケージは、ルーティング、Controller、HttpResultなど、基本的なMVCミドルウェアしか提供されません.他の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
{
}
次は最終的なプロジェクトです.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"
}
本住所:http://www.cnblogs.com/savorboard/p/6340451.html作者のブログ:Savorboardは転載を歓迎して、明らかな位置で出典とリンクを出してください