このトピックでは、カスタムAPIをカプセル化する方法について説明します。
使用状況ノート
HTTPリクエストのカスタムカプセル化の詳細を説明する前に、API操作の呼び出しにAlibaba Cloud SDKの使用を優先することを推奨します。
カスタムカプセル化が必要なシナリオ
API呼び出しの既存のメソッドがビジネス要件を満たさない場合は、カスタムAPIをカプセル化する必要があります。
手順
手順1: 使用するクラウドプロダクトのAPIスタイルを確認する
異なるスタイルのAPIは、異なる方法を使用してHTTPリクエストをカプセル化します。 スタイルがリモートプロシージャコール (RPC) かリソース指向アーキテクチャ (ROA) かを確認するには、Alibaba Cloud製品のAPIドキュメントを参照してください。 詳細は、「APIスタイル」をご参照ください。
手順2: リクエストパラメーターの組み立て
異なるスタイルのAPIは、異なる方法を使用してパラメータをアセンブルします。 詳細については、「RPCメカニズム」および「ROAメカニズム」をご参照ください。
ステップ3: リクエストに署名
HTTPリクエストに署名する理由
HTTPリクエストへの署名は、悪意のあるリクエストからクラウドサービスを保護し、不正なリクエストを事前に傍受することです。 署名は、キー、タイムスタンプ、および乱数などの特定の情報を要求に追加することによって実施される。
HTTPリクエストに署名することで、次の目的を達成できます。
リクエストの偽造防止: 署名は、リクエストが正当なクライアントからのものであるかどうかをAPIゲートウェイが識別するのに役立ちます。 これにより、無効なリクエストがシステムに入るのを防ぎます。
リプレイ攻撃を防ぐ: 署名には、タイムスタンプや乱数などの情報が含まれます。 リクエストの再生を回避し、各リクエストが1回だけ実行されるようにすることができます。
リクエストの改ざん防止: 署名には資格情報が含まれており、送信中にリクエストが改ざんまたは偽造されていないことを保証できます。
サポート監査: 署名は、リクエストのソース情報とタイムスタンプを記録できます。 このようにして、サービスプロバイダーはシステムを監査および追跡できます。
異なるスタイルのAPIは、異なるメソッドを使用して署名されます。 詳細については、「RPCメカニズム」および「ROAメカニズム」をご参照ください。
ステップ4: 返されたデータの処理
戻り値がすでにわかっている場合は、返されたデータを事前定義されたオブジェクトに変換できます。 それ以外の場合は、汎用処理のみを実行できます。
ステップ5: 例外のキャプチャ
ネットワーク異常またはパラメーターの受け渡しの問題により、リクエスト例外が発生する可能性があります。 このシナリオでは、例外をキャプチャする必要があります。