ASP.NET Web API(パート1)
先日、ASP.NET MVC 4 Betaについてブログ投稿しました。ASP.NET MVC 4は、数多くの素晴らしい新機能をもたらす大きな更新になっています。中でも一番興奮している改善の1つが、『Web API』作成のサポートです。この新機能については、今後いくつかブログ投稿を行いますが、今回はその1回目になります。
Web API
過去数年間、正式なサービスコントラクト(SOAPやWS*など)ではなく、プレーンなHTTPに公開されたサービスであるWeb APIが出現してきています。この方法でサービスを公開すると、広く様々なデバイスやクライアントプラットフォームで機能を統合したり、ブラウザ内からJavaScriptを使用してよりリッチなHTML体験を作成することが、簡単にできるようになります。大きなWebサイトではWeb APIが公開されており(例えば、Facebook、Twitter、LinkedIn、Netflixなど)、ここ数年の内に、接続デバイスの広がりや、さらにリッチなユーザー体験の要求が加速していくでしょう。
ASP.NET Web APIでは、広い範囲のクライアント(JavaScriptを使用したブラウザから、モバイル/クライアントプラットフォーム上の通常アプリまで)からアクセスできる強力なWeb APIを簡単に作成できます。
サポートには以下のものがあります。
-
現代のHTTPプログラミングモデル:クリーンで、強く型付けされたHTTPオブジェクトモデルを使用して、Web APIのHTTPリクエストおよびレスポンスに直接アクセス/操作します。このHTTPプログラミングモデルをサーバー上でサポートするのに加え、どんな.NETアプリからもWeb APIを呼び出すために新しいHttpClient APIを利用できます。これにより、クライアント上でも同じプログラミングモデルをサポートします。
-
コンテンツネゴシエーション:Web APIにはコンテンツネゴシエーションのサポートがビルトインされています。これは、APIから返されるデータの正しいフォーマットを決定し、クライアントとサーバー間で情報をやり取りできるようにするものです。JSON、XML、フォームのURLエンコードについてはデフォルトでサポートしていますが、独自のフォーマットを追加したり、さらにはデフォルトのコンテンツネゴシエーション戦略を独自のものと置換することも可能です。
-
クエリの作成:Web APIでは、OData URL規約を通じたクエリを簡単にサポートできます。Web APIからIQueryable<T>の型を返す時、フレームワークは自動的にODataクエリのサポートを提供するので、ページングやソートの実装も簡単です。
-
モデルのバインディングとバリデーション:モデルのバインディングにより、HTTPリクエストからさまざまなデータを抽出したり、それらの情報をWeb APIアクションが使用できる.NETオブジェクトに簡単に変換したりすることができます。Web APIは、ASP.NET MVCがサポートする同じモデルバインディングおよびバリデーションの基盤をサポートしています。
-
ルーティング:Web APIは、ルートパラメータや制約を含むASP.NET MVCおよびASP.NET内でサポートされているルーティング機能をすべてサポートしています。またWeb APIは、デフォルトでスマートコンベンションを提供しているため、クラスやメソッドに属性を適用することなく、Web APIが実装されたクラスを簡単に作成できます。Web APIの構成は、完全にコードを通じて行われるので、configファイルはクリーンなままです。
-
フィルタ:Web APIでは、横断的なビヘイビアをカプセル化し、適用できるフィルタ(例えば、[authorization])を簡単に使用/作成できます。
-
テスト実行の改善:静的なコンテキストオブジェクトにHTTPの詳細を設定するのではなく、Web APIアクションでは、テストを非常に簡単にする2つの新しいHTTPオブジェクトであるHttpRequestMessageやHttpResponseMessageのインスタンスとやり取りできるようになりました。例えば、モックフレームワークを使用せずに、Web APIの総合テストができます。
-
IoCサポート:Web APIは、ASP.NET MVCにより実装されるサービスロケーターパターンをサポートしており、多くの異なるファシリティに対する依存性を解決できます。依存性をクリーンに解決するために、IoCコンテナまたはDependency Injectionフレームワークと簡単に統合できます。
- 柔軟性のあるホスティング:Web APIは、(ASP.NET MVC および Webフォームベースのアプリケーションの両方を含む)どんなタイプのASP.NETアプリケーション内でもホストできます。ASP.NET/IISを使用したくない場合、独自のプロセス内でもオプションでホスト/公開できるようにWeb APIサポートをデザインしました。これにより、使用する方法や場所に対して最大限柔軟に対応できます。
詳細について
ASP.NET Web APIの利用方法についてのチュートリアルは、www.asp.net/web-apiで確認してください。
ASP.NET MVC 4 講演のビデオ(36分間これについてカバーしています)で、私の講演およびASP.NET Web APIのデモも確認できます。
次のブログ投稿で、新しいWeb APIの作成方法、この動作の基礎、クライアントから起動させるプログラミング方法をウォークスルーします。
Hope this helps,
Scott
P.S. ブログ以外に、Twitterを使って簡単な更新やリンク共有を行っています。私のハンドル名は、@scottguです。