c# - 違い - asp.net webapi 作り方



Web APIを既存のASP.NET MVC(5)Webアプリケーションプロジェクトに追加する方法 (1)

新しいMVC(5)プロジェクトを作成するときにWeb APIチェックボックスをチェックするのを忘れた(プロジェクトに追加する)と仮定した場合、Web APIを追加して動作させるには何が必要ですか?

移行に関する質問はたくさんありますが、MVC 5プロジェクトにWeb APIを追加するための完全で最新の手順を持っているとは思われず、いくつかの古い回答から変更されたようです。

Web APIをMVC 4に追加する

GlobalConfiguration.Configure(WebApiConfig.Register)MVC 4の追加


MVCプロジェクトを更新する

Nuget を使用して最新のWeb APIを入手してください。

プロジェクト-右クリック-Nugetパッケージの管理-Web API(Microsoft ASP.NET Web API ...)を検索し、MVCプロジェクトにインストールします。

その後、 Web APIルーティング を機能させる必要があります。 MicrosoftのASP.NET Web API 2の構成 から

WebApiConfig.csをApp_Start /フォルダーに追加します

using System.Web.Http;

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();

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

        // WebAPI when dealing with JSON & JavaScript!
        // Setup json serialization to serialize classes to camel (std. Json format)
        var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        formatter.SerializerSettings.ContractResolver =
            new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
        }
    }
}

MVCプロジェクトがある場合、 Global.asax.cs があり、新しいルートを追加します。 Global.asax.csルートの順序は重要です。 WebApiConfig.Register を使用する古い例があることに注意してください

Global.asax.csに次の行を追加します GlobalConfiguration.Configure(WebApiConfig.Register);

protected void Application_Start()
{
    // Default stuff
    AreaRegistration.RegisterAllAreas();

    // Manually installed WebAPI 2.2 after making an MVC project.
    GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way
    //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED

    // Default stuff
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

WebAPIヘルプ

非常に 役立つWebAPIヘルプページ を取得するには、WebAPI.HelpPageをインストールします。 機能については、 http://channel9.msdn.com/Events/Build/2014/3-644 (〜42分)を参照して http://channel9.msdn.com/Events/Build/2014/3-644 。 とても助かります!

Nuget Console: Install-Package Microsoft.AspNet.WebApi.HelpPage

WebAPIが機能していることを確認するには:

コントローラーフォルダーに->新しいアイテムを追加-> Web APIコントローラークラス。

public class TestController : ApiController
{
    //public TestController() { }

    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }
    //...
}

これで、通常どおりIE / FF / Chromeで、または非取得テスト用のJavaScriptコンソールでテストできます。

(URLにあるコントローラーのみで、新しいWeb APIコントローラーのGET()アクションを呼び出します。PUT/ POST / GET / DELETEなどのRESTに応じて、メソッド/アクションに自動的にマッピングされます。呼び出す必要はありません。 MVCのようにアクションによってそれらを直接)URL:

http://localhost:PORT/api/CONTROLLERNAME/

または 、jQueryを使用してコントローラーを照会します。 プロジェクトを実行し、コンソール(IEのF12)を開いて、Ajaxクエリを実行します。 (ポートとコントローラー名を確認してください)

$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
    //$( ".result" ).html( data );
    alert( "Get data received:" + data);
});

サイドノート:プロジェクトでMVCとWeb APIを組み合わせる際に考慮すべき長所/短所があります

WebAPIヘルプ検証: http://localhost:PORT/help





asp.net-mvc-5