> 백엔드 개발 > Golang > Protobuf 3 필드를 필수로 만드는 방법은 무엇입니까?

Protobuf 3 필드를 필수로 만드는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-02-09 08:10:28
앞으로
737명이 탐색했습니다.

如何使 Protobuf 3 字段成为必填字段?

Protobuf 3은 효율적인 데이터 직렬화 형식이지만 사용 중에 특정 필드를 필수로 설정해야 하는 경우가 있습니다. 그렇다면 Protobuf 3 필드를 필수로 만드는 방법은 무엇일까요? 이 기사에서는 PHP 편집자 Strawberry가 Protobuf 3의 기능을 사용하여 필수 필드를 구현하는 방법을 자세히 소개하고 해당 코드 예제를 제공합니다. 초보자이든 숙련된 개발자이든 이 문서는 필수 필드의 사용법을 빠르게 익히고 코드의 견고성과 안정성을 향상시키는 데 도움이 될 수 있습니다. 한 번 보자!

질문 내용

grpc/proto-buffers를 사용하여 golang에서 첫 번째 API 엔드포인트를 작성하고 있습니다. 나는 갈 아주 새로운입니다. 아래는 제가 테스트 케이스로 작성한 파일입니다

으아악

위에 v1.go 文件中定义 endpointrequest 개체가 포함되는 방식은 다음과 같습니다.

으아악

위의 테스트 사례는 제대로 작동하는 것 같습니다.

매개변수를 효과적으로 만드는 유효성 검사 규칙을 설정a 成为强制参数,因为它要求 a 是一个至少包含 1 的字符串。因此,如果省略 a하면 엔드포인트가 400을 반환합니다.

하지만 이제 cb 端点返回 400。我怎样才能做到这一点?在 protobufs 3 中,他们删除了 required 키워드를 생략했는지 확인하고 싶습니다. 그렇다면 문자열이 아닌 매개변수가 전달되었는지 확인하고 그에 따라 반응하려면 어떻게 해야 합니까?

해결책

짧은 버전: 할 수 없습니다.

required은 주로 변경 사항이 이전 버전과 호환되지 않기 때문에 제거되었습니다. 유효성 검사 옵션을 사용하여 이를 다시 구현하려는 시도는 그다지 과감하지는 않지만(변경이 더 쉬움) 보시다시피 단점이 있습니다.

대신 프로토타입 정의 외부에서 유효성 검사를 유지하고 이를 애플리케이션 자체로 이동하세요. 메시지를 받을 때마다 내용을 확인해야 합니다(required 出现时也是如此)。在极少数情况下,由 options 或 required가 나타날 때도 마찬가지입니다). 드문 경우지만 옵션이나

을 통해 제공되는 간단한 검증만으로 충분합니다. 🎜

위 내용은 Protobuf 3 필드를 필수로 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿