カスタム Server-Side REST エンドポイントの実装

 

適用対象: Azure Pack Windows

サーバー側には、データの取得と操作の両方に対してクライアント側から呼び出される一連の REST API が用意されています。 これらの種類の操作は、通常、バックエンドを呼び出して実際のデータを取得するか、実際の操作を実行します。 API を実装するコントローラーは、通常、JSON を返す ASP.NET MVC コントローラーであり、バックエンドは通常 Service Management API ですが、ASP.NET MVC Web サイトからアクセスできる他の任意のサービスを指定できます。

重要

Hello World サンプルでは、サーバー側の実装のサンプルを提供します。

クライアント側とサーバー側の両方が同じVisual Studio プロジェクトに配置でき、同じ管理ポータルにデプロイされます。

コントローラー クラス

コントローラー クラスは、ASP.NET MVC 標準抽象クラスコントローラーまたは AsyncController のいずれかのインスタンスです。 通常、セキュリティで保護された接続のみが許可されるようにするには [RequireHttps] 属性、応答のキャッシュを禁止する [OutputCache]、次の エラー処理 セクションで説明されている [PortalExceptionHandler] でマークされます。 フィッシング攻撃を防ぐために、コントローラー内のメソッドは [HttpPost] でマークされます。 これにより、HTTP POST 要求を許可するときに HTTP GET 要求が禁止されます。 クライアント側とサーバー側のどちらのフレームワークも、クライアント側フレームワークの Grid ウィジェットとの対話が必要な場合を除き、サーバー側とクライアント側の通信方法に制限はありません。 その場合は、次の Returning Datasets セクションを 参照してください。

データセットを返す

データセットは、UI によって表示されるデータの一覧であり、通常はリスト (グリッド ビュー) に表示されます。 これは、クライアント側フレームワークが取得してグリッドに表示する処理を行うという点で、標準的な応答とは異なります。 メソッドがデータセットを返す場合 (通常は一覧として UI で表されます)、次の例のように Controller.JsonDataSet メソッドを使用することをお勧めします。

return this.JsonDataSet(listOfData);

これにより、クライアント側フレームワークによる処理に適した JSON ラッパーに listOfData データセットが自動的にラップされます。 クライアント側の実装の詳細については、「Windows Azure Pack 管理ポータル拡張機能でグリッドを表示する方法」を参照してください。

コマンドの実行

コントローラーでコマンドを実行するメソッドは、通常、動作した操作を示す JSON オブジェクトを返します。 これは、成功を示すブール値と同じくらい単純な場合や、操作の結果として変更されたデータと同じくらい複雑な場合があります。 しかし、実際にはクライアントとサーバー側のフレームワークでは何も必要ありません。

エラーの処理

コントローラーによってスローされる例外は、通常、追加のアクションまたはフォローアップのためにユーザーに表示する必要があります。 サーバー側でこれを行う最も簡単な方法は、[PortalExceptionHandler] 属性をクラスに適用することです。 PortalException 型の例外は、正しくモデル化された JSON に変換され、適切な HTTP エラー コードが設定され、エラー通知で簡単に表示できるようにクライアント側に返されます。[PortalExceptionHandler] 属性でエラー時に返される JSON の例を次に示します。

{
  "message": "Fake Error",
  "ErrorMessage": "Fake Error",
  "httpStatusCode": "InternalServerError",
  "operationTrackingId": null,
  "stackTrace": null,
}

その他の種類の例外は、内部の詳細をユーザーに公開しないように、空の HTTP 500 エラーとして表示されます。さらに、スタック トレースは、拡張機能が実行されているポータルに DevelopmentMode が true に設定されている場合にのみ送信されます。 これは、管理ポータルのweb.config ファイルで変更できます。詳細については、API 呼び出しから返されるエラーの UI セクションを参照してください。

参照

Azure Pack 管理ポータルのユーザー インターフェイス拡張機能のWindows
Windows Azure Pack 管理ポータル拡張機能でグリッドを表示する方法
Windows Azure Pack 管理ポータル拡張機能のデバッグ