У меня есть сервер grpc. grpc работает нормально, но есть ошибка, препятствующая ответу от http-сервера.
это a.proto
файл
syntax = "proto3";
// option go_package here
import "google/api/annotations.proto";
import "protoc-gen-swagger/options/annotations.proto";
import "google/protobuf/timestamp.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "github.com/mwitkow/go-proto-validators/validator.proto";
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
info: {
version: "0.0.1";
};
// Enable custom Marshal method.
option (gogoproto.marshaler_all) = true;
// Enable custom Unmarshal method.
option (gogoproto.unmarshaler_all) = true;
// Enable custom Size method (Required by Marshal and Unmarshal).
option (gogoproto.sizer_all) = true;
// Enable registration with golang/protobuf for the grpc-gateway.
option (gogoproto.goproto_registration) = true;
// Enable generation of XXX_MessageName methods for grpc-go/status.
option (gogoproto.messagename_all) = true;
option (gogoproto.gogoproto_import) = true;
service MyService {
rpc GetByUrl (GetRequest) returns (GetResponse) {
option (google.api.http) = {
get: "/v0/me/{url}"
};
}
}
message GetResponse {
uint32 id = 1 [
(gogoproto.customname) = "Id", (validator.field) = {
int_gt: 0
human_error: "id must be a positive integer"
}];
string url = 2 [(validator.field) = {
string_not_empty: true
}];
google.protobuf.Timestamp created_at = 3 [(gogoproto.stdtime) = true];
google.protobuf.Timestamp updated_at = 4 [(gogoproto.stdtime) = true];
}
message GetRequest {
string url = 1 [(validator.field) = {
string_not_empty: true
}];
}
Ответ grpc:
id:1 url:"new.com" created_at:<seconds:1576053167 > updated_at:<seconds:1576053167 >
Но http-сервер выдает ошибку:
panic serving 127.0.0.1:54172: interface conversion: *time.Time is not proto.Message: missing method ProtoMessage
Я уже упоминал https://github.com/gogo/protobuf/issues/212