ASP.NET Core の REST
Web ページを閲覧すると、Web サーバーからブラウザーに対して、HTML、CSS、JavaScript を使用した通信が行われます。 たとえば、サインイン フォームを送信したり、購入ボタンを選んだりしてページを操作すると、ブラウザーから Web サーバーに情報が送信されます。
同様に、Web サーバーは、Web サービスを使用して幅広いクライアント (ブラウザー、モバイル デバイス、その他の Web サーバーなど) と通信することができます。 API クライアントからサーバーに対して HTTP 経由の通信が行われ、この 2 つの間で、JSON や XML などのデータ形式を使用した情報が交換されます。 API は、ユーザー インターフェイスのロジックのほとんどを Web ブラウザーで実行するシングルページ アプリケーション (SPA) でよく使われます。 Web サーバーとの通信は、主に Web API を通じて行われます。
REST: HTTP を使用して API をビルドする場合の一般的なパターン
Representational State Transfer (REST) は、Web サービスをビルドするためのアーキテクチャ スタイルです。 REST 要求は HTTP 経由で行われます。 Web ブラウザーが Web ページの取得やサーバーへのデータの送信に使用するのと同じ HTTP 動詞が使用されます。 次の動詞があります。
GET
: Web サービスからデータを取得します。POST
: Web サービスで新しいデータ項目を作成します。PUT
: Web サービス上のデータ項目を更新します。PATCH
: 項目の変更方法に関する一連の命令を記述することにより、Web サービスのデータ項目を更新します。 このモジュールのサンプル アプリケーションでは、この動詞は使用しません。DELETE
: Web サービス上のデータ項目を削除します。
REST に準拠する Web サービス API は RESTful API と呼ばれます。 これらは、次のものを使用して定義します。
- ベース URI。
GET
、POST
、PUT
、PATCH
、DELETE
などのHTTP メソッド。- データのメディアの種類 (JavaScript Object Notation (JSON) や XML など)。
API では、多くの場合、いくつかの異なってはいても関連のあるものに対するサービスを提供する必要があります。 たとえば、このピザ API では、ピザ、顧客、注文を管理します。 "ルーティング" を使って URI (Uniform Resource Identifier) をこのコードの論理的な区分にマップすることで、https://localhost:5000/pizza への要求が PizzaController
にルーティングされ、https://localhost:5000/order への要求が OrderController
にルーティングされるようにします。
ASP.NET Core で API を作成する利点
ASP.NET では、同じフレームワークとパターンを使用して、Web ページとサービスの両方を作成できます。 モデルのクラスや検証ロジックを再利用でき、同じプロジェクトで Web ページとサービスの両方をサイドバイサイドで提供することもできます。 このアプローチには、次の利点があります。
シンプルなシリアル化: ASP.NET は、最新の Web エクスペリエンス向けに設計されています。 作成したクラスは、追加設定なしで、エンドポイントによって、適切に書式設定された JSON に自動的にシリアル化されます。 特別な構成は必要ありません。 固有の要件を持つエンドポイント用にシリアル化をカスタマイズすることができます。
認証と認可: セキュリティのため、API エンドポイントには業界標準の JSON Web Token (JWT) のサポートが組み込まれています。 ポリシー ベースの認可を使用して、強力なアクセス制御ルールをコード内で柔軟に定義できます。
コードに沿ったルーティング: ASP.NET では、属性を使用して、コードにインラインでルートと動詞を定義できます。 要求パス、クエリ文字列、要求本文のデータが、メソッド パラメーターに自動的にバインドされます。
既定でのHTTPS: HTTPS は、最新のプロフェッショナルな Web API の重要な部分です。 エンドツーエンドの暗号化に依存して、プライバシーを提供し、クライアントとサーバーの間で API 呼び出しがインターセプトされ変更されることがないように保証します。
ASP.NET では、そのまま使用できる HTTPS のサポートが提供されています。 テスト証明書が自動的に生成され、それが簡単にインポートされ、ローカル HTTPS が有効になります。そのため、アプリケーションを発行する前に安全に実行し、デバッグすることができます。
コードとナレッジを .NET アプリと共有する
.NET のスキルとエコシステムを使って、Web API のロジックを、モバイル、Web、デスクトップ、サービスなど、.NET で作成された他のアプリと共有することができます。
.NET HTTP REPL を使用した Web API のテスト
従来の Web サイトを開発している場合、通常は、Web ブラウザーに作業内容を表示してテストします。 Web API は HTML ではなくデータを受け取って返すため、Web ブラウザーは最適な Web API テスト ツールではありません。
Web API を調べたり操作したりするための最も簡単なオプションの 1 つは .NET HTTP REPL (Read-Evaluate-Print Loop) です。 これは、対話型のコマンドライン環境を構築するためのシンプルで一般的な方法です。 次のユニットでは、簡単な Web API を作成し、.NET HTTP REPL を使用してそれを操作します。