Dapr服务调用的go sdk定义
Dapr服务调用的go sdk定义
go sdk使用案例
https://github.com/dapr/go-sdk
要在另一个使用Dapr sidecar运行的服务上调用特定的方法,Dapr客户端提供了两个选项。
调用一个没有任何数据的服务:
resp, err = client.InvokeService(ctx, "service-name", "method-name")
还有带数据调用服务:
content := &DataContent{
ContentType: "application/json",
Data: []byte(`{ "id": "a123", "value": "demo", "valid": true }`)
}
resp, err := client.InvokeServiceWithContent(ctx, "service-name", "method-name", content)
go sdk提供的API
https://github.com/dapr/go-sdk/blob/d6de57c71a1d3c7ce3a3b81385609dfba18a1a18/client/invoke.go
go sdk在 client 上封装了两个方法用于服务调用,InvokeService方法用来发送不带数据的请求:
// InvokeService invokes service without raw data ([]byte).
func (c *GRPCClient) InvokeService(ctx context.Context, serviceID, method string) (out []byte, err error) {
...
}
InvokeServiceWithContent方法用来发现带数据的请求:
// InvokeServiceWithContent invokes service without content (data + content type).
func (c *GRPCClient) InvokeServiceWithContent(ctx context.Context, serviceID, method string, content *DataContent) (out []byte, err error) {
......
}
DataContent 的定义:
// DataContent the service invocation content
type DataContent struct {
// Data is the input data
Data []byte
// ContentType is the type of the data content
ContentType string
}