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?

protobuf.devのAPI Best Practicesを読んでいく全部俺Advent Calendar 2024

Day 22

API Best Practices ~【Appendix】繰り返しフィールドの更新

Posted at

【Appendix】繰り返しフィールドの更新

repeated フィールドを更新する最悪の方法は、クライアントに置換リストを強制することです。
クライアントに配列全体を提供することを強制することには多くの危険性があります。
未知のフィールドを保持しないクライアントはデータ損失を引き起こします。
同時書き込みはデータ損失を引き起こします。
これらの問題が適用されなくても、クライアントはサーバー側でフィールドがどのように解釈されるかを理解するために、ドキュメントを注意深く読む必要があります。
空のフィールドは、サーバーがそれを更新しないことを意味しますか、それともサーバーがそれをクリアすることを意味しますか?

修正1

クライアントが配列全体を書き込み時に提供することなく、配列に要素を置き換え、削除、または挿入できるようにする、repeated フィールド用のフィールドマスクを使用します。

修正2

リクエストプロトに個別の追加、置換、削除配列を作成します。

修正3

追加またはクリアのみを許可します。
繰り返しフィールドをメッセージでラップすることで、これを行うことができます。
存在するが空のメッセージはクリアを意味し、それ以外の場合は、繰り返し要素は追加を意味します。


取り急ぎで置換リストを強制する状態になっていることが多い印象。
要件によるとも思うので、適切な実装を選択していきたい。

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?