「RESTful Web サービスクックブック」より
問題
計算の実行やデータの検証などのタスクにリソースの抽象化を提供する方法を知りたい。
解決
処理関数をリソースとして扱い、HTTP GET を使用して、処理関数の出力を含む表現をフェッチします。クエリ パラメーターを使用して、処理関数に入力を提供します。
これには、処理機能を表す URI に対する GET 要求のみが必要です。あなたの例 ' http://example.com/application/abc123 ' URI。応答を返すときは、Tomasz によって既に提案されているように、現在持っている情報を含め、HTTP コードを使用して処理の状態を示します。
ただし...、後続のアプリケーション処理で何らかの方法でデータを保存または変更する場合は、このアプローチを使用しないでください。
GET リクエストに副作用があってはなりません。いずれにせよ、アプリケーションの送信によって (キューから処理された後であっても) 新しい情報/データが保存される場合は、要求の本文にアプリケーションのデータを含む PUT または POST 要求を使用する必要があります。詳細については、「HTTP GET 要求でデータを変更すべきではない理由」を参照してください。
アプリケーションのサブミットがデータを保存または変更する場合は、非同期処理のパターンを使用します: アプリケーションの詳細を含む POST または PUT 要求。
例えば
POST http://example.com/applications
これは、新しいアプリケーション リソースの URI と共に「201 Created」を返します。
また
PUT http://example.com/applications/abc123
「201 Created」を返し、
どちらも、その時点ですでにわかっているリソース情報も返します。
その後、新しいリソースの URI に対して GET 要求を安全に実行できます。これは、データ (これまでのアプリケーション処理の結果) のみを取得するためであり、GET の結果としてデータが保存または変更されることはありません。
アプリケーションの処理の進行状況を示すために、GET 要求は応答で特定のステータス コード (キューに入れられた、処理中、受け入れられた、拒否された) を返したり、HTTP 応答コードを使用したりできます。いずれの場合も、「200 OK」は、アプリケーションの処理が完了したときにのみ返されます。