假设我有一个gpc服务,并且有一个API可以创建新用户,如下所示:
service UserService{
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
}
message User {
string userId = 1;
string firstName = 2;
string lastName = 3;
string password = 4;
}
message CreateUserRequest {
user User = 1;
}
message CreateUserResponse {
user User = 1;
}
该服务将用户数据保存到PostgresDb中的users_table中,如下所示:
user1 := NewUser() // instantiating the User object as defined in the proto file.
// user2 := NewMyUser() // instantiating the MyUser object as defined separately in the service.
result := s.db.Table(UsersTable).Create(user1)
此外,我正在使用proto缓冲区根据上面的api proto文件生成服务器和客户端代码。我的问题是:在实例化用户对象时,用户应该是在原型定义中定义的生成的用户结构吗?或者我应该像这样将另一个用户结构定义为专用于postgresDb的服务中的模型?
struct MyUser {
userId string
firstName string
lastName string
password string
createdAtMs int64 // an extra field not available in the api
}
后续问题:每种方法的优缺点是什么?它的最佳设计原则是什么?
眼眸繁星
相关分类