ASP.NET Web API チュートリアル

0 件のコメント

ASP.NET Web API の入門。 ASP.NET Web API を利用して RESTful web サービス を作成します。 ここでは、何も装飾的な処理を考えない、最も基本的な サービス の作成を目指します。

概要

今回は サンプル として、Catalog サービス を作成します。 具体的には「GET リクエスト で、商品名一覧を取得し、 POST リクエスト で、商品名を登録する」サービス を作ります。 あまり難しいことはせず、できる限り シンプル なものを作っていきます。

catalog.get

  • HTTP リクエスト
    [GET] http://localhost:8080/api/catalog/
  • パラメター
    なし。
  • リクエスト ボディー
    なし。
  • レスポンス
    商品名リスト。

catalog.post

  • HTTP リクエスト
    [POST] http://localhost:8080/api/catalog/{id}
  • パラメター
    名前 説明
    id number 商品ID
  • リクエスト ボディー
    商品名。
  • レスポンス
    "success"文字列。

プロジェクト の作成

実装の観点からすると 「"ASP.NET Web API" は "ASP.NET MVC" とまったく異なるもの」 ですが、プロジェクトの作成は、 "ASP.NET MVC 4 Web アプリケーション" から作成します。

  1. [ファイル]-[新規作成]-[プロジェクト] を選択します。
  2. [インストールされたテンプレート] から [ // Visual C# / Web ] を選択し、 [ASP.NET MVC 4 Web アプリケーション] を選択します。
  3. [名前]、[場所]、[ソリューション名] を任意に変更します。
  4. [OK] を選択します。
  5. [空] の テンプレート を選択します。
  6. [OK] を選択します。

RESTful サービス の作成

ASP.NET Web API は MVC と多分に似ている作りになっていますが、異なる作りになっています。 具体的には、Web API は「名前空間が System.Net.Http に収められている」点、「デフォルト設定だと実行される アクション名 が HTTP メソッド名 と一致する」点等が ASP.NET MVC と異なります。

以下では、上記 概要 で説明したサービスをコーディングしていきます。

  1. "Controllers" ディレクトリ を右クリック、[追加]-[コントローラー] を選択します。
  2. 以下の設定を行い、[追加] を選択します。 ここでは サンプル として コントローラー名 を CatalogController としています。
    コントローラー名
    (任意の名称。慣例的に XxxxController。ここでは CatalogController
    テンプレート
    空の API コントローラー
  3. GET と POST を実行するよう、CatalogController.cs に以下の コード を記述します。
    namespace WebApiApplication.Controllers
    {
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Net;
        using System.Net.Http;
        using System.Web.Http;
    
        public class CatalogController : ApiController
        {
            // GET api/catalog/
            public IEnumerable<string> Get()
            {
                // 商品一覧を取得する処理を記述...
    
                return new string[] { "鉛筆", "ボールペン", "消しゴム" };
            }
    
            // POST api/catalog/{id}
            public string Post(string id, [FromBody]string product)
            {
                // 商品の登録処理を記述...
    
                return "success";
            }
        }
    }
    

実装は以上です。 (かんたん!!)

ASP.NET Web API は、アクション の選択を HTTP メソッド に応じて自動的に選ぶようになっています。 なので、GET リクエスト をした場合 Get() メソッド が選択され、 POST リクエスト をした場合 Post() メソッド が選択されます。

テスト 実行

Fiddler を利用して 接続テスト を行います。

  1. Visual Studio で、作成した プロジェクト を デバッグ実行 します。 ※サンプル では ポート を 8080 で固定しています。
  2. Fiddler で [composer] タブ を選択します。
  3. メソッド、URI、Body を入力して [Execute] を選択します。 GET および POST の リクエスト サンプル を以下に載せます。

    GET リクエスト

    GET http://localhost:8080/api/catalog HTTP/1.1
    User-Agent: Fiddler
    Host: localhost:8080
    Connection: keep-alive
    

    POST リクエスト

    POST http://localhost:8080/api/catalog/123 HTTP/1.1
    User-Agent: Fiddler
    Host: localhost:8080
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 5
    
    =hoge
    
  4. うまく アクセス できれば、 HTTP 200 OK が返ってきます。

POST リクエスト では メッセージボディー に "=" で始まる記載をすることに注意します。 "=" がないと、いくらやっても null になってしまします。

今回、以下のサイトを参考にしました。