ASP.NET Web APIの勘所
日本マイクロソフト株式会社の赤間さんのセッションを見た時のメモ
Web APIというとRESTful型、JSONエンコードというイメージがあるがRPC型、XMLエンコードもいいよ
サーバー・クライアント間の通信
RESTfulスタイル
エンティティオブジェクトのCURD処理の形で実装
RPCスタイル
処理伝票の送信と結果伝票の受信の形で実装
ASP.NET Web APIのサンプルでRESTfulなサーバーAPIを開発するというのをよく見かける
ASP.NET Web APIはRESTfulスタイル用の技術ではない!
マッピングルールを変更するとRPCスタイルも使える
ASP.NET Web APIの既定のマッピング
- URL:コントローラクラス名
- HTTP Verb:メソッド名
HTTP Verb | 意味 |
---|---|
GET | READ |
POST | CREATE |
PUT | UPDATE |
DELETE | DELETE |
JSON vs XML
JSONを使うよりXMLを使った方が使い勝手がよい場合もある
JSONはシリアル化/デシリアル化で問題がでやすい
なぜ?
JSONでは標準で扱えるデータ型が限られている
JSONの型:整数型、浮動小数点型、文字列型、boolean、配列、オブジェクト、null以外で問題が出やすい
問題が出る例:日付型、byte[]型など
ASP.NET Web APIでシリアル化形式を変更する
VB.Net
Dim httpClient = New System.Net.Http.HttpClient
httpClient.DefaultRequestHeaders.Accept.Add(New Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/xml"))
※参照設定にSystem.Net.Httpが必要
WCFとASP.NET Web APIの本質的な違い
WCF | ASP.NET Web API | |
---|---|---|
API設計スタイル | RPC型のみ | 自由(RESTfulなど) |
メッセージフォーマット | SOAPのみ | 自由(JSONなど) |
通信プロトコル | 自由(HTTP、TCP/IPなど) | HTTP |
- WCFはAPIスタイルが限定されているが通信方式は自由
- ASP.NET Web APIは通信方式が限定されているがAPIスタイルは自由