Go 通过GRPC服务器为graphql服务器提供服务

Go 通过GRPC服务器为graphql服务器提供服务,go,graphql,grpc,protoc,Go,Graphql,Grpc,Protoc,下面是通过http侦听器为graphql服务器提供服务的代码片段。您能帮助我如何使用GRPC服务器进行类似的实现吗?我的意思是在grpc服务器上提供graphQL服务器 func Run() { var cfg AppConfig cfg.ProductURL = "0.0.0.0:8001" err := envconfig.Process("", &cfg) if err != nil { log

下面是通过http侦听器为graphql服务器提供服务的代码片段。您能帮助我如何使用GRPC服务器进行类似的实现吗?我的意思是在grpc服务器上提供graphQL服务器

func Run() {
    var cfg AppConfig
    cfg.ProductURL = "0.0.0.0:8001"
    err := envconfig.Process("", &cfg)
    if err != nil {
        log.Fatal(err)
    }
    s, err := NewGraphQLServer(cfg.ProductURL)
    if err != nil {
        log.Fatal(err)
    }

    http.Handle("/graphql", handler.GraphQL(gql.NewExecutableSchema(gql.Config{
        Resolvers: s,
    })))
    http.Handle("/playground", handler.Playground("test", "/graphql"))
    log.Fatal(http.ListenAndServe(":8080", nil))
}

// NewGraphQLServer is to create get the connections to other services
func NewGraphQLServer(productURL string) (*resolvers.Resolver, error) {
    // Connect to Product Service
    productClient, err := service.NewProductClient(productURL)
    if err != nil {
        return nil, err
    }

    return &resolvers.Resolver{
        ProductClient: productClient,
    }, nil
}```

GraphQL和gRPC有两种不同的用途。如果您想使用gRPC作为数据通信媒介,那么必须定义与GraphQL模式等效的原型模式。最重要的是,您想用这个实现解决什么用例?我在gRPC服务器上构建了几个API,这些API通过protoc缓冲区进行通信。我使用gRPC作为前端(移动和桌面)和数据库之间的媒介。我选择gRPC是为了减少延迟和更高的数据压缩。由于后端API的数量不断增加,前端需要从单个模式中为不同的屏幕设置不同的字段,因此我想在这个场景中使用graphQL,用户可以查询所选字段。我正在尝试在golang中实现graphQL服务器。有可能在gRPC服务器中实现graphQL功能吗?您无法将两者作为一个协议缝合在一起,但当然,您可以将graphQL网关放在gRPC服务前面,这样客户端就可以根据需要选择性地提取数据。请让我知道这是否能满足您的用例。如果我将GraphQL保留在前端,那么您认为通信将使用protoc吗?不,它将是纯文本,即JSON。我的建议是使用基于gRPC的通信,因为它是压缩二进制的。您的传输延迟问题将通过Protoc解决。根据我的经验,我可以说,gRPC的通信速度至少是标准REST/GraphQL的3.5倍。GraphQL和gRPC有两种不同的用途。如果您想使用gRPC作为数据通信媒介,那么必须定义与GraphQL模式等效的原型模式。最重要的是,您想用这个实现解决什么用例?我在gRPC服务器上构建了几个API,这些API通过protoc缓冲区进行通信。我使用gRPC作为前端(移动和桌面)和数据库之间的媒介。我选择gRPC是为了减少延迟和更高的数据压缩。由于后端API的数量不断增加,前端需要从单个模式中为不同的屏幕设置不同的字段,因此我想在这个场景中使用graphQL,用户可以查询所选字段。我正在尝试在golang中实现graphQL服务器。有可能在gRPC服务器中实现graphQL功能吗?您无法将两者作为一个协议缝合在一起,但当然,您可以将graphQL网关放在gRPC服务前面,这样客户端就可以根据需要选择性地提取数据。请让我知道这是否能满足您的用例。如果我将GraphQL保留在前端,那么您认为通信将使用protoc吗?不,它将是纯文本,即JSON。我的建议是使用基于gRPC的通信,因为它是压缩二进制的。您的传输延迟问题将通过Protoc解决。根据我的经验,我可以说gRPC的通信速度至少是标准REST/GraphQL的3.5倍。