API Best Practices ~【Appendix】パフォーマンスの最適化
【Appendix】パフォーマンスの最適化 プロトコルのパース性能を向上させるために、以下のような手法が存在するが、型安全性や可読性とのトレードオフを考慮する必要がある。 型安全性や可読性を犠牲...
34 search resultsShowing 1~20 results
You need to log-in
【Appendix】パフォーマンスの最適化 プロトコルのパース性能を向上させるために、以下のような手法が存在するが、型安全性や可読性とのトレードオフを考慮する必要がある。 型安全性や可読性を犠牲...
【Appendix】Android/iOSアプリのビルドにはプロトコル定義が含まれる モバイルアプリのビルドには、プロトコル定義の情報が埋め込まれるため、機密情報が漏洩するリスクあり。 適切な対...
【Appendix】繰り返しフィールド内の順序依存性を避ける 順序依存性を避けるようにしてください。脆弱性があります。 特に悪いタイプの順序依存性は、並列配列です。 並列配列は、クライアントが結...
【Appendix】繰り返しフィールドの更新 repeated フィールドを更新する最悪の方法は、クライアントに置換リストを強制することです。 クライアントに配列全体を提供することを強制すること...
【Appendix】繰り返しフィールドを返す repeated のフィールドが empty の場合、クライアントはそのフィールドが単にサーバによって入力されなかっただけなのか、それともそのフィー...
各RPCメソッドに対してユニークなリクエストとレスポンスを作成する 各RPCメソッドに対して、ユニークなリクエストとレスポンスを作成してください。 後からトップレベルのリクエストやレスポンスを分...
ステータスコードの伝播は慎重に RPCサービスはエラーを調査し、呼び出し元に意味のあるステータスコードを返すことに注意する必要があります。 例として、引数を取らないProductService....
リクエストとレスポンスのサイズを制限する リクエストとレスポンスのサイズは制限すべきです。 8MiB程度の制限を推奨し、多くのプロト実装が壊れる2GiBはハードリミットです。 多くのストレージシ...
RPCには必ず期限を設定する RPCにはデフォルトでタイムアウトがありません。 リクエストは完了時にのみ解放されるバックエンドリソースを占有するため、デフォルトの期限を設定することは良い方法です...
サービス名を意識しユニークなものにする .proto ファイル内の service キーワードの後の部分であるサービス名は、サービスのクラス名を生成するだけでなく、驚くほど多くの場所で使用されま...
冪等性を優先する クライアントで再試行する可能性があります。 再試行結果が変わる場合、ユーザーに驚かれるかもしれません。 重複する書き込みを回避する簡単な方法は、 サーバーで重複排除されるクライ...
map型を使おう proto3 からmap型が実装されました。 proto2 にもバックポートされています。 独自に KVPair を定義するよりよいでしょう。 事前に構造がわからない任意のデー...
フィールドはスカラやenumではなく、繰り返しメッセージにする 一般的に拡張していくと、単一の繰り返しフィールドが複数の関連する繰り返しフィールドへ足し算されていくかと思いますが、これはよくあり...
モバイルまたはウェブで連続リクエストが必要な場合の一回限りのAPI呼び出しを作成する Webやモバイルのクライアントがデータ依存関係のある 2 つのクエリを行う必要がある場合、 ベストプラクティ...
小さなデータを操作するメソッドを作成しクライアントがそれらの複数RPCをバッチ処理してUIを構成することを期待する 複数の狭く指定されたデータを操作するRPCを用意し、クライアントに必要なものを...
Batch/multi-phase Requestsでの冪等性 可能な限り、データ変更を1つの不可分な単位にする。 さらに重要なのは、データ変更を冪等にすること。 部分的な失敗の完全な再試行によ...
リードリクエストにフィールドマスクを含める GetやListなど読み取り専用のリクエストにフィールドマスクを含めることを推奨します。 推奨される方法: google.protobuf.Field...
関連するフィールドは新しいメッセージにグループ化し凝集性の高いフィールドのみを入れ子にする フィールドが密接に関連している場合、サーバー内部で一緒にやり取りすることがよくあります。 その場合、関...
ページングトークンなしでページネーションAPIを定義することは稀である ページネーションするAPIのベストプラクティスは、ページングトークン(next_page_tokenと呼ばれる)を使用する...
利用しないフィールドを含めないこと API定義はシステムとやり取りをするための項目だけに留めましょう。 余計な情報は混乱のもとです。 デバッグしたい場合に、RPCレスポンス拡張(サイドチャネル)...
34 search resultsShowing 1~20 results
Qiita is a knowledge sharing service for engineers.