非常に大量のユーザー送信コンテンツを処理する可能性のある Web API を開発しています。つまり、エンドポイントへの呼び出しがすぐに結果を返さない可能性があります。そのため、非同期/ノンブロッキング API の実装を検討しています。現在、ユーザーに次の方法でコンテンツを送信してもらう計画です。
POST /v1/foo
JSON 応答本文には一意の要求 ID (UUID) が含まれており、ユーザーはそれを同じエンドポイントでの後続のポーリング GET でパラメーターとして送信します。
GET /v1/foo?request_id=<some-uuid>
ジョブが終了した場合、結果は JSON として返されます。それ以外の場合は、ステータスの更新が返されます (再び JSON)。
(上記の両方の呼び出しが失敗しない限り、単に "200 OK" 応答を返します。)
これは非同期 API を実装する合理的な方法ですか? そうでない場合、これを行う「正しい」(そしてRESTfulな)方法は何ですか?ここで説明するモデルでは、一時的なステータス更新リソースを作成してから最終的な結果リソースを作成することを推奨していますが、それは私には不必要に複雑に思えます。