ASP.NET MVC4 の Web API を学んでみる その1 〜基礎編〜
既に RC版 がリリースされている ASP.NET MVC4 の Web API を利用してみたのでメモを記載する。既に日本語でも Web API の紹介記事が書かれているので、まずは以下の記事を参照頂きたい。
- ASP.NET MVC 4 Beta で追加された Web API プロジェクトを試す id:shiba-yan:20120216:1329400698
- ASP.NET Web API のルーティングとアクション: MVC 4 新機能シリーズ
今回はプロジェクトテンプレートから生成した Web API アプリケーションの動作概要について確認する。
基本的な使い方について
Global.asax では routes.MapHttpRoute() メソッドを利用し、Web API コントローラのルーティングを設定している。
- Global.asax(の抜粋)
public class WebApiApplication : System.Web.HttpApplication { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //Web API コントローラ用のルーティング routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //従来のコントローラ用のルーティング routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
従来のコントローラと異なり、Web API 用のコントローラは ApiController を継承している点に注意が必要だ*1
- ValuesController.cs(の抜粋)
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Web.Http; using System.Diagnostics; namespace Mvc4WebApiApp.Controllers { public class ValuesController : ApiController { // GET /api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET /api/values/5 public string Get(int id) { return "value"; } (中略) }
テンプレート アプリケーションの起動
Visual Studio から アプリケーションを起動し、ブラウザから http://localhost:<ポート>/api/Values にアクセスすることで ValuesController.Get() メソッドの返り値を取得できる。動作イメージについては以下を参照して欲しい。
*1:従来のコントローラは Controller を継承