从rest客户端调用gRPC服务时,我得到了http错误代码405。
我尝试使用gRPC客户端调用delete方法,它工作正常(即获得200)。
REST客户端
req, err = http.NewRequest("DELETE", fmt.Sprintf("%s%s", *address, "/v1/todo"), nil)
resp, err = http.DefaultClient.Do(req)
if err != nil {
log.Fatalf("failed to call DeleteAll method: %v", err)
}
bodyBytes, err = ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
body = fmt.Sprintf("failed read Delete response body: %v", err)
} else {
body = string(bodyBytes)
}
log.Printf("Delete response: Code=%d, Body=%s\n\n", resp.StatusCode, body)
gRPC客户端
req6 := v1.DeleteAllRequest{
Api: apiVersion,
}
res6, err := c.DeleteAll(ctx, &req6)
if err != nil {
log.Fatalf("Delete failed: %v", err)
}
log.Printf("Delete all result: <%+v>\n\n", res6)
需要正确执行delete函数并获得200 http响应。
发布于 2019-05-16 16:59:10
当前的浏览器本身并不支持grpc。因此,我尝试使用envoy (由lyft提供)的sidecar代理,它作为我的grpc后端的接口。
...
static_resources:
cluster:
- name: local_service
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
load_assignment:
cluster_name: local_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 8080
...
这就是我如何在我的特使配置中编写服务,关于这一点的更多细节可以在Envoy's Github Repository上找到,他们有多个例子来更好地理解这个过程。
https://stackoverflow.com/questions/56149367
复制相似问题