ASP.NET WEB API 開発体験

                  @miso_soup3
         2013/1/26 Hokuriku.NET vol.11 LT
ゴール

ASP.NET WEB API ってこんな感じなんだ


対象者

ASP.NET WEB API をご存じない方
ASP.NET MVC を触ったことがある方
目次

1.WEB API を作ろう
2.ASP.NET MVC と似ている…が!
3.アクションメソッドの実装
4.公開へ!
1.WEB API を作ろう

太郎さんの上司より



マルチデバイス対応の WEB サービスを作成する
ことになりました。
太郎さんは、WEB API を作成してください。
1.WEB API を作ろう


           Html +     太郎さん↓
          JavaScipt


 Win RT               WEB API

            iOS
1.WEB API を作ろう
WEB API って何だろう?

例: Twitter API https://dev.twitter.com/docs/api/1.1

GET statuses/mentions_timline
GET statuses/user_timeline
GET search/tweets
POST direct_messages/new

           → HTTP 通信を使って、
             アプリケーション機能を提供する仕組み
1.WEB API を作ろう
「WCF ?」


2012 / 8 にリリースされた
    ASP.NET MVC 4
    ASP.NET WEB API

             → ASP.NET WEB API を使って、
               WEB API を実装することに。
2.ASP.NET MVC と似ている…が!

太郎さんの友達より



ASP.NET WEB API って、
ASP.NET MVC と似ているらしいよ
2.ASP.NET MVC と似ている…が!
認証が必要なことを表す属性を付けてみました。
2.ASP.NET MVC と似ている…が!
動かなかった!
2.ASP.NET MVC と似ている…が!
別のライブラリでした。

ASP.NET MVC では



ASP.NET WEB API では
2.ASP.NET MVC と似ている…が!

    ASP.NET MVC          ASP.NET WEB API

System.Web.Mvc.dll       System.Web.Http.dll
の中に、                     の中に、

・Authorize 属性            ・Authorize 属性
・Controller              ・ApiController
・ActionFilterAttribute   ・ActionFilterAttribute
などなど・・・                  などなど・・・

            同じような構造だけど、違う!
2.ASP.NET MVC と似ている…が!

ASP.NET WEB API はもともと WCF の一部として開発。

ASP.NET MVC のインフラストラクチャ
に似せながら作られた。

(ASP.NET MVC の、
      “IoC“
      “設定は規約より勝る“
      “シンプル”
なところが本当に素晴らしかったんです。)
3.アクションメソッドの実装
モデルを作りました。




             ← アノテーションに
              よるモデル検証
3.アクションメソッドの実装
Person を作成する API を実装しました。
                   引数を、URL や Body から作
                   成するモデルバインダ


                        検証情報が格納さ
                        れた ModelState



                    メソッド名の規約による、
                    実行メソッドの選択。
3.アクションメソッドの実装

・フィルター属性
・モデルバインダ
・モデル検証
・アクションメソッドの選択
・ルーティング
などなど


→ ASP.NET MVC と似ているところがたくさん!
4.公開へ!

JavaScript 側を実装している花子さん




API 使ってみたいから、公開しておいて!
あ、あとどんな風に使えばいいか、
ドキュメントもちょうだいね!
4.公開へ!
Azure WEB Site を使って公開しました。
4.公開へ!
ソリューションエクスプローラから、
「発行」
4.公開へ!

たった数分で公開完了。
4.公開へ!
次はドキュメント!

Nuget に、自動でヘルプページを作成してくれる
パッケージがあるらしい。




              ※プレビュー版(2013/01/26)
4.公開へ!



パッケージを
インストールすると、

ASP.NET MVC で、
ヘルプページが
作成されます。
4.公開へ!
ルーティングも反映。
コメントも表示できます。
4.公開へ!
API の詳細ヘルプページ。
パラメータの説明も。
4.公開へ!
どのようなレスポンスが返ってくるか
なども表示。
4.公開へ!

さらに!


                 ※プレビュー版(2013/01/26)


WebApiTestClient のパッケージを追加すると、
先のヘルプページ上で、API を実行できます。
4.公開へ!
「Test API」 をクリックすると・・・
4.公開へ!


HTTP リクエスト
を編集し、
実行することが
できます。
4.公開へ!
結果も確認することができます。
4.公開へ!

WEB API とヘルプページを
Azure にて公開することができました。

便利!
最後に
太郎さんが体験したこと

・WEB API を提供するフレームワーク
・ASP.NET MVC の構造と似ている
      ・フィルター属性
      ・モデルバインダ
      ・モデル検証
      ・アクションメソッドの選択
      ・・・・・けど、ASP.NET MVC とは別のもの。
・Azure に発行
・ヘルプページ作成、WEB API のデバッグ
他にも・・・
・ASP.NET WEB API の Self-Host でテスト
http://d.hatena.ne.jp/taedium/20121218/p1
       IIS なしで動く Self Host 機能を使って、テストをする方法です。

・Http Client として使えるライブラリ(System.Net.Http)
      var client = new HttpClient();
      var response = await client.GetAsync(“api/person”);
http://www.asp.net/web-api/overview/web-api-clients/calling-a-
web-api-from-a-net-client

・ASP.NET WEB API HTTP Message Lifecycle
http://www.microsoft.com/en-us/download/details.aspx?id=36476
       ASP.NET WEB API のパイプラインが1枚のポスターに。
ありがとうございました!

ASP.NET WEB API 開発体験