내가 (GO 작성된 grpc 클라이언트와 자바로 작성된 grpc 서버가 모두 같은 프로토 파일 (구문 2)를 사용하여.proto2 확장을 grpc와 함께 사용할 수 있습니까?
내 grpc 방법은 확장을 포함 할 수있는 메시지를합니다. 나는를 구성 할 수 있어요 메시지를 서버에 보내면 서버에서 메시지를 읽으려고하지만 내 확장은 알 수없는 필드로 사용할 수 있습니다. 즉, Java에서 entity.hasExtension (내선 번호)을 반환합니다. false).
내 질문은 grpc가 메서드 매개 변수로 제공되는 메시지에서 확장을 사용할 수 있는지 여부입니다. 그렇지 않은 경우 알 수없는 필드를 거짓으로 변환하는 방법이 있습니까? 특정 유형의 ld?
syntax = "proto2";
// proto file used as source for go client and java server as well
package my_services;
import "basic_types.proto";
// import "extension_types.proto";
// do not delete: options for generating java code
option java_multiple_files = true;
option java_package = "myservice.grpc";
option java_outer_classname = "MyServiceWrapper";
option objc_class_prefix = "Foo";
// Interface exposed by the server.
service DataService {
// Obtains all objects satisfying the request message
rpc MyMethod(DataRequest) returns (DataResponse) {}
}
message DataRequest {
optional IdDefinition id = 1;
repeated basic_types.Entity templates = 2;
}
message DataResponse {
repeated IdDefinition id = 1;
optional basic_types.DataResult result = 2;
}
message IdDefinition {
optional int32 myid = 1;
}
basic_types.Entity 기본 메시지를 포함하는 확장입니다 :
message Entity {
extensions 1 to max;
}
하고, 예를 들어 연장 될 수있다
내 프로토 파일이 좋아요 :
extend basic_types.Entity {
optional Foo foo = 1000;
optional Bar bar = 1001;
}
도움이나 힌트를 주시면 감사하겠습니다.
안녕하세요. Carl 님, 귀하의 빠른 답변에 많은 감사드립니다. 방금 시도했지만 문제없이 작동합니다. 하지만 API가 안정적이지 않기 때문에 grpc를 통해 바이트 만 보내고 구문 분석/언 마샬링을 혼자 수행 할 것을 고려 중입니다. – stepasite