В настоящее время я работаю над переносом нашей оставшейся службы go на основе api на gRPC, используя protobuf. Я использую пример из Интернета, мой файл service.proto похож на
syntax = "proto3";
package v1;
import "google/protobuf/timestamp.proto";
// Taks we have to do
message ToDo {
// Unique integer identifier of the todo task
int64 id = 1;
// Title of the task
string title = 2;
// Detail description of the todo task
string description = 3;
// Date and time to remind the todo task
google.protobuf.Timestamp reminder = 4;
}
// Request data to create new todo task
message CreateRequest{
// API versioning: it is my best practice to specify version explicitly
string api = 1;
// Task entity to add
ToDo toDo = 2;
}
// Response that contains data for created todo task
message CreateResponse{
// API versioning: it is my best practice to specify version explicitly
string api = 1;
// ID of created task
int64 id = 2;
}
// Service to manage list of todo tasks
service ToDoService {
// Create new todo task
rpc Create(CreateRequest) returns (CreateResponse);
}
Теперь в данном фрагменте мы видим, что определяем все запросы и ответы в одном и том же файле .proto.
Я хочу определить их в другом файле go, чтобы их можно было использовать во всем проекте, например, у меня есть файл модели с именем CreateRequest.go, и каким-то образом я могу импортировать его в этот файл .proto и для остальной части проекта. Я также могу использовать эту модель CreateRequest, чтобы мне не приходилось определять одну и ту же модель дважды.
1) Можно ли это сделать?
2) Если да, то какой для этого правильный синтаксис?
Я новичок в этом, поэтому, если вопрос выглядит глупо, просто посмейтесь и забудьте.
*.proto
файлы, из которых вы создаете свои файлы Go. - person Markus W Mahlberg   schedule 14.11.2019model.proto
файл, импортировать его в свой основной файл прототипа и скомпилироватьmodel.proto
файл в любом месте структуры вашего проекта. - person Emin Laletovic   schedule 14.11.2019