@BaldUser
Инженеришка

Принято ли описывать несколько Service в одном .proto файле?

Погружаюсь в тему protocol buffers и для закрепления материала решил написать свой кодогенератор (слоёв транспорта и модели) для простых .proto файлов. Во всех руководствах приводят примеры описания с одним сервисов, или вообще без него - только с месседжами. Меня же интересует, можно ли в одном .proto файле определять несколько сервисов, например так:
spoiler

syntax = "proto3";
package blogpost.proto.api;
option go_package = "*/ms/blogpost;api";
service PostService {
rpc CreatePost(CreatePostRequest) returns (CreatePostResponse);
rpc GetPost(GetPostRequest) returns (GetPostResponse);
rpc UpdatePost(UpdatePostRequest) returns (UpdatePostResponse);
rpc DeletePost(DeletePostRequest) returns (DeletePostResponse);
}

message Post {
***
}

message CreatePostRequest {
***
}

message CreatePostResponse {
***
}

message GetPostRequest {
***
}

message GetPostResponse {
Post post = 1;
repeated Comment comments = 2;
}

***

service CommentService {
rpc CreateComment(CreateCommentRequest) returns (CreateCommentResponse);
rpc GetComment(GetCommentRequest) returns (Comment);
rpc UpdateComment(UpdateCommentRequest) returns (UpdateCommentResponse);
rpc DeleteComment(DeleteCommentRequest) returns (DeleteCommentResponse);
}

message CreateCommentRequest {
***
}

message CreateCommentResponse {
***
}

message GetCommentRequest {
uint32 commentID = 1;
}

message Comment {
***
}

***

То есть технически-то можно, и *pb.go и *grpc_pb.go у меня из этого proto сгенерировались, но вопрос в другом - распространена ли эта практика? Сталкивался ли кто-нибудь с таким в разработке? Не является ли этот подход deprecated?
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы