RealPath:
WebPath:
2016/11/08 17:47 (JST) 更新
REST API >>

WEBとAPI混在プロジェクト

Contents

新規プロジェクトを作成する場合

プロジェクト作成時に [Web API] にチェックを付けて進めると、自動的に各種 API 作成に必要な設定が済んだ状態になります。

img--500--size

手動で API 設定を行う場合

[Web API] をチェックしていない状態でプロジェクトを作成してしまった後で、後から API を追加したい場合には以下の設定が必要です。

パッケージ追加

Package Manager Console にて以下を実行

PM> Install-Package Microsoft.AspNet.WebApi

ルート設定

App_Start/WebApiConfig.cs を作成

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace WebApplication6
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Global.aspx.cs を編集

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http; // ★これを追加
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace WebApplication6
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register); // ★これを追加
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

ValuesController を追加してみる

前項で示したような ValuesController を自前で追加してみます。

Controllers/ValuesController.cs を作成

using System;
using System.Collections.Generic;
using System.Web.Http;

namespace WebApplication6.Controllers
{
    public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "hoge", "fuga" };
        }
    }
}

 
実行結果。

API 定義通りのデータが XML として出力されました。