ASP.NET WEB API 開発体験

Preview:

Citation preview

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.公開へ!

目次

太郎さんの上司より

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

1.WEB API を作ろう

1.WEB API を作ろう

WEB API Win RT

iOS

Html + JavaScipt

太郎さん↓

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 を実装することに。

太郎さんの友達より

ASP.NET WEB API って、 ASP.NET MVC と似ているらしいよ

2.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 の中に、 ・Authorize 属性 ・Controller ・ActionFilterAttribute などなど・・・

System.Web.Http.dll の中に、 ・Authorize 属性 ・ApiController ・ActionFilterAttribute などなど・・・

同じような構造だけど、違う!

2.ASP.NET MVC と似ている…が!

ASP.NET WEB API はもともと WCF の一部として開発。 ASP.NET MVC のインフラストラクチャ に似せながら作られた。 (ASP.NET MVC の、 “IoC“ “設定は規約より勝る“ “シンプル” なところが本当に素晴らしかったんです。)

3.アクションメソッドの実装

モデルを作りました。

← アノテーションに よるモデル検証

3.アクションメソッドの実装

Person を作成する API を実装しました。

検証情報が格納された ModelState

引数を、URL や Body から作成するモデルバインダ

メソッド名の規約による、 実行メソッドの選択。

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.公開へ!

さらに!

WebApiTestClient のパッケージを追加すると、 先のヘルプページ上で、API を実行できます。

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

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枚のポスターに。

ありがとうございました!