ASP.NET WEB API 開発体験
-
Upload
miso-soup3 -
Category
Documents
-
view
44.562 -
download
0
Transcript of ASP.NET WEB API 開発体験
![Page 1: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/1.jpg)
ASP.NET WEB API 開発体験
@miso_soup3
2013/1/26 Hokuriku.NET vol.11 LT
![Page 2: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/2.jpg)
ゴール
ASP.NET WEB API ってこんな感じなんだ
対象者
ASP.NET WEB API をご存じない方 ASP.NET MVC を触ったことがある方
![Page 3: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/3.jpg)
1.WEB API を作ろう
2.ASP.NET MVC と似ている…が!
3.アクションメソッドの実装
4.公開へ!
目次
![Page 4: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/4.jpg)
太郎さんの上司より
マルチデバイス対応の WEB サービスを作成する ことになりました。 太郎さんは、WEB API を作成してください。
1.WEB API を作ろう
![Page 5: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/5.jpg)
1.WEB API を作ろう
WEB API Win RT
iOS
Html + JavaScipt
太郎さん↓
![Page 6: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/6.jpg)
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 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/7.jpg)
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 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/8.jpg)
太郎さんの友達より
ASP.NET WEB API って、 ASP.NET MVC と似ているらしいよ
2.ASP.NET MVC と似ている…が!
![Page 9: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/9.jpg)
2.ASP.NET MVC と似ている…が!
認証が必要なことを表す属性を付けてみました。
![Page 10: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/10.jpg)
2.ASP.NET MVC と似ている…が!
動かなかった!
![Page 11: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/11.jpg)
2.ASP.NET MVC と似ている…が!
別のライブラリでした。
ASP.NET MVC では
ASP.NET WEB API では
![Page 12: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/12.jpg)
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 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/13.jpg)
2.ASP.NET MVC と似ている…が!
ASP.NET WEB API はもともと WCF の一部として開発。 ASP.NET MVC のインフラストラクチャ に似せながら作られた。 (ASP.NET MVC の、 “IoC“ “設定は規約より勝る“ “シンプル” なところが本当に素晴らしかったんです。)
![Page 14: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/14.jpg)
3.アクションメソッドの実装
モデルを作りました。
← アノテーションに よるモデル検証
![Page 15: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/15.jpg)
3.アクションメソッドの実装
Person を作成する API を実装しました。
検証情報が格納された ModelState
引数を、URL や Body から作成するモデルバインダ
メソッド名の規約による、 実行メソッドの選択。
![Page 16: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/16.jpg)
3.アクションメソッドの実装
・フィルター属性 ・モデルバインダ ・モデル検証 ・アクションメソッドの選択 ・ルーティング などなど → ASP.NET MVC と似ているところがたくさん!
![Page 17: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/17.jpg)
4.公開へ!
JavaScript 側を実装している花子さん
API 使ってみたいから、公開しておいて! あ、あとどんな風に使えばいいか、 ドキュメントもちょうだいね!
![Page 18: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/18.jpg)
4.公開へ!
Azure WEB Site を使って公開しました。
![Page 19: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/19.jpg)
4.公開へ!
ソリューションエクスプローラから、 「発行」
![Page 20: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/20.jpg)
4.公開へ!
たった数分で公開完了。
![Page 21: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/21.jpg)
4.公開へ!
次はドキュメント! Nuget に、自動でヘルプページを作成してくれる パッケージがあるらしい。
※プレビュー版(2013/01/26)
![Page 22: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/22.jpg)
4.公開へ!
パッケージを インストールすると、 ASP.NET MVC で、 ヘルプページが 作成されます。
![Page 23: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/23.jpg)
4.公開へ!
ルーティングも反映。 コメントも表示できます。
![Page 24: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/24.jpg)
4.公開へ!
API の詳細ヘルプページ。 パラメータの説明も。
![Page 25: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/25.jpg)
4.公開へ!
どのようなレスポンスが返ってくるか なども表示。
![Page 26: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/26.jpg)
4.公開へ!
さらに!
WebApiTestClient のパッケージを追加すると、 先のヘルプページ上で、API を実行できます。
※プレビュー版(2013/01/26)
![Page 27: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/27.jpg)
4.公開へ!
「Test API」 をクリックすると・・・
![Page 28: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/28.jpg)
4.公開へ!
HTTP リクエスト を編集し、 実行することが できます。
![Page 29: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/29.jpg)
4.公開へ!
結果も確認することができます。
![Page 30: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/30.jpg)
4.公開へ!
WEB API とヘルプページを Azure にて公開することができました。 便利!
![Page 31: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/31.jpg)
最後に
太郎さんが体験したこと ・WEB API を提供するフレームワーク ・ASP.NET MVC の構造と似ている ・フィルター属性 ・モデルバインダ ・モデル検証 ・アクションメソッドの選択 ・・・・・けど、ASP.NET MVC とは別のもの。 ・Azure に発行 ・ヘルプページ作成、WEB API のデバッグ
![Page 32: ASP.NET WEB API 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/32.jpg)
他にも・・・
・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 開発体験](https://reader034.fdocument.pub/reader034/viewer/2022042619/58ed0e4c1a28ab90658b45ed/html5/thumbnails/33.jpg)
ありがとうございました!