0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

冪等性を優先する

クライアントで再試行する可能性があります。
再試行結果が変わる場合、ユーザーに驚かれるかもしれません。

重複する書き込みを回避する簡単な方法は、
サーバーで重複排除されるクライアント作成のリクエスト ID を指定できるようにすることです(たとえば、コンテンツのハッシュまたは UUID)。

// bad: 重複したitemが作成される可能性があります
message CreateItemRequest {
  string name  = 2;
  string price = 3;
}

// good: hash で重複を回避するサーバー側の処理を想定
message CreateItemRequest {
  string hash  = 1;
  string name  = 2;
  string price = 3;
}

ストレージのUK制約を使うことも考えられますが、このような手法でBFFなどのサーバー側のみで重複排除することもあります。

Request内容のhashをサーバで作成して、Redisなどで重複排除するケースなども出来そうですが、
冪等性を期待するかどうかはAPIの仕様によると思いますので、明示的にRequestに冪等性を担保する情報を持たせる手法は有用かもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?