asp.net web api 開発体験

33
ASP.NET WEB API 開発体験 @miso_soup3 2013/1/26 Hokuriku.NET vol.11 LT

Upload: miso-soup3

Post on 12-Apr-2017

44.562 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ASP.NET WEB API 開発体験

ASP.NET WEB API 開発体験

@miso_soup3

2013/1/26 Hokuriku.NET vol.11 LT

Page 2: ASP.NET WEB API 開発体験

ゴール

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

対象者

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

Page 3: ASP.NET WEB API 開発体験

1.WEB API を作ろう

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

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

4.公開へ!

目次

Page 4: ASP.NET WEB API 開発体験

太郎さんの上司より

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

1.WEB API を作ろう

Page 5: ASP.NET WEB API 開発体験

1.WEB API を作ろう

WEB API Win RT

iOS

Html + JavaScipt

太郎さん↓

Page 6: ASP.NET WEB API 開発体験

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 通信を使って、 アプリケーション機能を提供する仕組み

Page 7: ASP.NET WEB API 開発体験

1.WEB API を作ろう

「WCF ?」

2012 / 8 にリリースされた

ASP.NET MVC 4 ASP.NET WEB API

→ ASP.NET WEB API を使って、 WEB API を実装することに。

Page 8: ASP.NET WEB API 開発体験

太郎さんの友達より

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

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

Page 9: ASP.NET WEB API 開発体験

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

認証が必要なことを表す属性を付けてみました。

Page 10: ASP.NET WEB API 開発体験

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

動かなかった!

Page 11: ASP.NET WEB API 開発体験

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

別のライブラリでした。

ASP.NET MVC では

ASP.NET WEB API では

Page 12: 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 などなど・・・

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

Page 13: ASP.NET WEB API 開発体験

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

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

Page 14: ASP.NET WEB API 開発体験

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

モデルを作りました。

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

Page 15: ASP.NET WEB API 開発体験

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

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

検証情報が格納された ModelState

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

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

Page 16: ASP.NET WEB API 開発体験

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

・フィルター属性 ・モデルバインダ ・モデル検証 ・アクションメソッドの選択 ・ルーティング などなど → ASP.NET MVC と似ているところがたくさん!

Page 17: ASP.NET WEB API 開発体験

4.公開へ!

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

API 使ってみたいから、公開しておいて! あ、あとどんな風に使えばいいか、 ドキュメントもちょうだいね!

Page 18: ASP.NET WEB API 開発体験

4.公開へ!

Azure WEB Site を使って公開しました。

Page 19: ASP.NET WEB API 開発体験

4.公開へ!

ソリューションエクスプローラから、 「発行」

Page 20: ASP.NET WEB API 開発体験

4.公開へ!

たった数分で公開完了。

Page 21: ASP.NET WEB API 開発体験

4.公開へ!

次はドキュメント! Nuget に、自動でヘルプページを作成してくれる パッケージがあるらしい。

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

Page 22: ASP.NET WEB API 開発体験

4.公開へ!

パッケージを インストールすると、 ASP.NET MVC で、 ヘルプページが 作成されます。

Page 23: ASP.NET WEB API 開発体験

4.公開へ!

ルーティングも反映。 コメントも表示できます。

Page 24: ASP.NET WEB API 開発体験

4.公開へ!

API の詳細ヘルプページ。 パラメータの説明も。

Page 25: ASP.NET WEB API 開発体験

4.公開へ!

どのようなレスポンスが返ってくるか なども表示。

Page 26: ASP.NET WEB API 開発体験

4.公開へ!

さらに!

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

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

Page 27: ASP.NET WEB API 開発体験

4.公開へ!

「Test API」 をクリックすると・・・

Page 28: ASP.NET WEB API 開発体験

4.公開へ!

HTTP リクエスト を編集し、 実行することが できます。

Page 29: ASP.NET WEB API 開発体験

4.公開へ!

結果も確認することができます。

Page 30: ASP.NET WEB API 開発体験

4.公開へ!

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

Page 31: ASP.NET WEB API 開発体験

最後に

太郎さんが体験したこと ・WEB API を提供するフレームワーク ・ASP.NET MVC の構造と似ている ・フィルター属性 ・モデルバインダ ・モデル検証 ・アクションメソッドの選択 ・・・・・けど、ASP.NET MVC とは別のもの。 ・Azure に発行 ・ヘルプページ作成、WEB API のデバッグ

Page 32: ASP.NET 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枚のポスターに。

Page 33: ASP.NET WEB API 開発体験

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