サーバー上にオブジェクトを作成するREST APIを実装しています。オブジェクトの作成には複数のステップがあり、しばらく時間がかかることがあります。私はユーザーがそれを待つことを望んでいません。私は、クライアント要求の一意の要求IDを持つ202応答を返すだけで、サーバー上のいくつかのスレッドを開始してオブジェクトを作成します。クライアントは、要求が完了したかどうかを確認するために、後でチェックすることになっています。このフローは次のようになります。非同期タスクのHTTPステータスコード
- クライアントはオブジェクトをPOSTします。
- サーバーは、クライアントが第三段階で
/my-app/<reqId>
今
のGETを行い、これらの事が起こるかもしれませんLocationヘッダ/my-app/<reqId>
- オブジェクト作成はまだ進行中です(クライアントはいつか再度確認する必要があります)。
- エラーが発生しました。
- オブジェクトは正常に作成されました。
私のAPI /my-app/<reqId>
は、上記の3つのシナリオに対してどのようなHTTPコードを返すべきですか?
実際のリソースを作成する際のエラーはどうですか?レスポンスの本文にエラーの詳細を含む 'state'リソースの200を返すべきですか? – falcon
はい、「状態」は常に存在するため、エラーはありません。サーバー上のバックグラウンド作成プロセスでエラーが発生した場合は、プロトコル自体ではなく、これを示す内容です。代わりに、要求されたリソース(処理の結果)がそこにあるかどうかだけを確認することができます。それがなければ '404'、作成されると内容が' 200'に切り替わります。ただし、エラーが発生した場合は作成されることはありません。 –