要求の非同期送信
要求を非同期に送信するには、次のヘッダーを要求に指定します。
- キー:
Prefer - 値:
respond-async
呼び出し元アプリケーションはまた、応答を待機する時間も指定できます。呼び出しを指定時間内に処理できる場合は、呼び出しが同期で実行されたかのようにクラウド API が結果を返します。詳細については、応答の同期的待機を参照してください。
呼び出し元の検証
待機時間が指定されていない場合は、クラウド API は呼び出しを受理する前に検証を実行します。これには以下が含まれます。
- パスが有効であることを検証する
- 入力がスキーマに照らして正しい形式であることを検証する
- ユーザーが認証されていることを検証する
これらの検証のいずれかに失敗すると、呼び出しに対する応答はエラーになります。
検証エラーが発生した場合でも、初期呼び出しは「202 Accepted」応答を取得できます。これは、次のような状況で発生します。
- 呼び出しに、前述のリストで示した原因とは異なる検証エラーがある。例えば、呼び出しでグループの作成を試行できるものの、スーパーバイザの ID はユーザーにはマップされないなどです。
- サーバーが検証の完了まで最大 5 秒間待機する。サーバーの負荷が重く、非同期要求がキューに入った場合、または検証に異常に長い時間かかる場合は、サーバーは検証を完了せずに 202 Accepted 応答を返します。
呼び出しに対する応答
ほとんどの場合、呼び出しが初期検証を渡すと、クラウド API は以下を返します。
- 「202 Accepted」応答。
- 本文が空で、
GW-Async-Locationヘッダーなどの一連の応答ヘッダーを含む応答オブジェクト。
GW-Async-Location ヘッダーには、非同期 API /requests パスが含まれます。呼び出し元アプリケーションはこのパスを使用して、元の呼び出しのステータス(呼び出しが処理されたかどうかなど)を判断したり、結果にアクセスする必要があります。このヘッダー値は次の構文を使用します。
/async/v1/requests/<asyncRequestId>
<asyncRequestId> は、元の呼び出しの結果に安全にアクセスするためのランダムな値です。この値を使用してアプリケーションデータにアクセスできるため、Guidewire ではセキュリティで保護しておくことをお勧めします。
応答が「202 Accepted」にならない状況があります。
- 待機設定が使用されており、要求が要求された待機時間よりも早く完了する場合は、応答は同期になります。待機設定の指定の詳細については、応答の同期的待機を参照してください。
- アプリケーションが過負荷状態で、要求を処理したり、キューに入れることができない場合は、503 応答が返されます。
チュートリアル:要求の非同期送信
このチュートリアルでは、Postman を使用する環境を設定し、適切なサンプルデータセットを用意していることを前提としています。詳細については、チュートリアル:Postman 環境のセットアップを参照してください。
このチュートリアルでは、要求を非同期送信して、ユーザーを新規作成します(ユーザーの作成に必要な作業は最小限なので、通常は、このタイプの要求を非同期で実行する必要はありません。チュートリアルを簡素化するため、ここでは、User を使用します。User には親エンティティは必要ありません。必須フィールドは 1 つだけで、すべての InsuranceSuite アプリケーションで同じ動作を実行します)。
チュートリアル手順
- Postman で、[Launchpad]タブの右側の[+]をクリックして、新しい要求を開始します。
- [権限]タブで、ユーザー名
suとパスワードgwを使用して、[Basic Auth]を選択します。
- [権限]タブで、ユーザー名
- 次の呼び出しを入力しますが、[送信]はまだクリックしません。
- POST http://localhost:8080/cc/rest/admin/v1/users
- 要求ペイロードを指定します。
- タブの先頭行([パラメータ]で始まる行)で、[本文]をクリックします。
- ラジオボタンの行で[raw]を選択します。
- ラジオボタンの行の末尾で、ドロップダウンリストの値を[テキスト]から[JSON]に変更します。
- 以下を、ラジオボタンの下のテキストフィールドに貼り付けます。
{ "data": { "attributes": { "username": "asyncUser" } } }
- 非同期要求をヘッダーに追加します。
- タブの先頭行で、[ヘッダー]をクリックします。
- 既存のキー/値のリストの下部までスクロールします。
- キー/値のリストの下部にある空白行に、以下を入力します。
- キー:Prefer
- 値:respond-async
- [送信]をクリックします。
結果
応答は「202 Accepted」になります。GW-Async-Location ヘッダーの値を表示するには、応答オブジェクトペインで[ヘッダー]タブをクリックします(この[ヘッダー]タブは、Body と Cookies で始まるタブの行にあります)。この値は、次のチュートリアルで使用します。