我们为所有微服务提供通用的身份验证服务。当我们验证请求作为响应时,我们会发送如下所示的 JSON。{ Auth: bool, Body: interface{}}在编写 proto3 语法时,我们如何编写接口类型之类的东西?我尝试过使用 Any 类型,但我无法使用它,因为我们需要在我无法生成的类型 url 中传递消息类型。用于响应的原型消息message AuthResponse { bool Auth = 1; google.protobuf.Any Body = 2;}有人可以在这里帮忙吗?
1 回答

饮歌长啸
TA贡献1951条经验 获得超3个赞
您可以将body类型设置为bytes.
如果您的身体有一组预定义的类型,那么我建议您将Auth结构更改为如下所示:
type AuthResponse struct {
Auth bool
Body Encodable
}
// Encodable defines types that can be encoded into a byte slice.
type Encodable interface {
Encode() []byte
}
然后,Encode() []byte在您的每种类型上实现。
或者,如果您的Body字段可以是任何东西,那么也许是一个类似的解决方案,除了您的Encode函数看起来像这样:
func Encode(interface{}) []byte
但是,在这种情况下,您可能必须使用一些反射魔法才能将其编码为某个字节片。你甚至可以使用JSON.
我希望这有帮助!
- 1 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消