猿问

如何在 gRPC Protobuf 中为接口创建类型?

我们为所有微服务提供通用的身份验证服务。当我们验证请求作为响应时,我们会发送如下所示的 JSON。


{

    Auth: bool,

    Body: interface{}

}

在编写 proto3 语法时,我们如何编写接口类型之类的东西?


我尝试过使用 Any 类型,但我无法使用它,因为我们需要在我无法生成的类型 url 中传递消息类型。


用于响应的原型消息


message AuthResponse {

    bool Auth = 1;

    google.protobuf.Any Body = 2;

}

有人可以在这里帮忙吗?


吃鸡游戏
浏览 141回答 1
1回答

饮歌长啸

您可以将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.我希望这有帮助!
随时随地看视频慕课网APP

相关分类

Go
我要回答