1

サーバーに従業員リソースのコレクションがあるとします。また、クライアント アプリケーションがこの従業員リソースのコレクションを使用して他のリソースを作成するとします。または、簡単にするために、クライアント アプリケーションから従業員のコレクション全体を更新するとします。

クライアント アプリケーションがサーバーと同期しなくなり、一部の従業員リソースがサーバーから削除された後、クライアント アプリケーションが大量の従業員 (たとえば 100,000 人またはそれ以上) を更新しようとした場合はどうなるでしょうか。このトランザクションはどうなりますか?

トランザクションは適切な従業員を処理し、欠落している従業員を無視する必要がありますか?それともトランザクション全体が失敗し、失敗した理由をクライアントに通知する必要がありますか?

4

1 に答える 1

2

多くのオプションがあります。

410 Gone「かつてはリソースであり、二度と使用されない 404」を示すために使用でき、何かが削除されたことを通知するのに役立ちます。410 を受信したクライアントは、アクションを実行できます。

同時実行で別のフローを提供する ETags メカニズムを使用することもできます。すべてのリソースには ETag が必要であり、サーバーはヘッダーIf-None-Matchとコードを使用412 Precondition Failedして、競合についてクライアントに通知する方法に対処できます。

欠落しているものは無視して、Warningヘッダーを使用してクライアントに通知することができます。ヘッダーには、より多くのデータを含めることができます。

WebDAV (HTTP を拡張) は、バッチ操作をサポートし、複数のステータス コードを返すことをサポートしています。同様の同時実行性の問題がある HTTP ファイルシステムで使用されます。

JSON 応答で、ヘッダーとステータス コードを使用して表現できる内容を繰り返さないようにしてください。メッセージ本文には、トランザクションではなく、リソースに関する情報のみを含める必要があります。

于 2013-03-01T16:26:31.067 に答える