非同期操作用のRESTfulAPIを調査しているときに、次のデザインパターンに遭遇しました。
POST uri:longOperation
戻り値:
- HTTP 202
- 場所:uri:pendingOperation
GET uri:pendingOperation
戻り値:
- 操作が実行されている場合
- 進捗レポートを返します。
- 操作が完了した場合
- HTTP 303
- 場所:uri:operationResponse
GET uri:operationResponse
- 非同期操作の応答
最後のステップは疑わしいと思います。HTTP GET
非同期操作が、などの意味をなさないエラーコードで完了した場合にどうなるかを考えてみてくださいHTTP 409 ("Conflict")
。
- uri: operationResponseではなくuri:pendingOperation
HTTP 303
に関連付けられた応答を指す必要はありませんか? - このように使用
HTTP 303
することは有害であると見なされますか?そうでない場合、なぜですか? - これが私たちにできる最善のことですか、それとももっと良い方法がありますか?