我有一些 REST API,我的模型定义为 Go 结构。
type User struct {
FirstName string
LastName string
}
然后我有了获取数据的数据库方法。
GetUserByID(id int) (*User, error)
现在我想用https://github.com/twitchtv/twirp替换我的 REST API 。
因此我开始在.proto
文件中定义我的模型。
message User {
string first_name = 2;
string last_name = 3;
}
现在我有两种User
类型。让我们称它们为原生类型和原型类型。
我还在我的.proto
文件中定义了一个服务,它将用户返回到前端。
service Users {
rpc GetUser(Id) returns (User);
}
这会生成一个我必须填写的界面。
func (s *Server) GetUser(context.Context, id) (*User, error) {
// i'd like to reuse my existing database methods
u, err := db.GetUserByID(id)
// handle error
// do more stuff
return u, nil
}
不幸的是,这不起作用。我的数据库返回一个本地用户,但界面需要一个原始用户。
有没有简单的方法让它工作?也许使用type aliases
?
非常感谢!