現在、私のチームで議論が行われており、他の見解に興味があります. さまざまな分析アルゴリズムとサービスを適用してドキュメントに注釈を付ける役割を持つ RESTful Web サービスがあるとします。基本的なやり取りは明確です。ドキュメント コレクションであるリソースがあります。クライアントは新しいドキュメントをコレクションに POST し、新しいドキュメントの URI を取得し、それを GET しdocURI
てドキュメントを取得したり、GETして名前付きエンティティなどの{docURI}/metadata
一般的なメタデータを表示したりできます。問題は、一部の分析が{docURI}/ne
完了までに時間がかかる場合があります。UI で部分的な結果または増分結果を表示できるようにするため、分析が完了する前にクライアントがメタデータ URI を取得するとします。今後 GET を繰り返すと、より多くの結果が得られる可能性があります。
これまでに説明したソリューションには、次のものがあります。
- すべての分析が完了するまで HTTP 接続を開いたままにしておく (これはスケーラブルではないようです)
content-length
とヘッダーを使用accept-range
して増分コンテンツを取得します (ただし、最終的なコンテンツの長さは事前にわかりません)- リソースごとに Atom フィードを提供して、クライアントが単にリソースを GET するのではなく、更新イベントをサブスクライブするようにする (アクティブなドキュメントが多数ある場合は、非常に複雑で、リソースを大量に消費する可能性があります)
- GET がその時点で利用可能なものを返すようにするだけです (ただし、最終的にいつ終了したかをクライアントが認識しているという問題は残ります) [コメントに続く冪等性への参照を削除するために編集] .
RESTful アーキテクチャで長期間または非同期の対話を処理するための代替方法について、意見や提案はありますか?
イアン