Protobuf 3 は効率的なデータシリアル化形式ですが、使用中に特定のフィールドを必須にする必要がある場合があります。では、Protobuf 3 フィールドを必須にするにはどうすればよいでしょうか?この記事では、PHP エディターの Strawberry が、Protobuf 3 の機能を使用して必須フィールドを実装する方法と、対応するコード例を詳しく紹介します。初心者でも経験豊富な開発者でも、この記事は必須フィールドの使用法をすぐにマスターし、コードの堅牢性と信頼性を向上させるのに役立ちます。見てみましょう!
私は、grpc/proto-buffers を使用して golang で最初の API エンドポイントを作成しています。私はかなり初心者です。 以下はテストケース用に書いたファイルです
リーリーこれは、上記の v1.go
ファイルで endpointrequest
オブジェクトがどのように定義されているかです:
上記のテスト ケースは正常に動作するようです。
パラメータ a
が少なくとも 1 を含む文字列である必要があるため、パラメータ a
を効果的に必須パラメータにするための検証ルールを設定しました。したがって、a
が省略された場合、エンドポイントは 400 を返します。
しかしここでは、c
または b
エンドポイントが省略された場合に 400 が返されることを確認したいと思います。これどうやってするの? protobufs 3 では、required
キーワードが削除されました。では、文字列以外のパラメータが渡されたかどうかを確認し、それに応じて反応するにはどうすればよいでしょうか?
簡単に言えば、それはできません。
required
は主に、変更により下位互換性がなくなったため削除されました。検証オプションを使用して再実装しようとすることは、それほど大幅ではありません (変更は簡単です) が、ご覧のとおり欠点があります。
代わりに、検証をプロトタイプ定義の外側に保ち、それをアプリケーション自体に移動します。メッセージを受信したら、その内容を必ず確認してください (required
が表示された場合も同様です)。まれに、オプションまたは required
によって提供される単純な検証で十分な場合があります。
以上がProtobuf 3 フィールドを必須にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。