在客户端中出现405 http错误以调用gRPC Web

时间:2019-05-15 12:28:03

标签: go grpc-go

从其余客户端调用gRPC服务时,我收到了HTTP错误代码405。

我尝试使用gRPC客户端调用delete方法,它工作正常(即获取200)。

REST CLIENT

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)

希望正确执行删除功能并获得200个http响应。

1 个答案:

答案 0 :(得分:0)

当前的浏览器本身不支持grpc。因此,我尝试使用来自envoy(lyft的envoy)的sidecar代理,该代理充当grpc后端的接口。

list_fast = [z for z in list_dataframes if 'FAST' in z['Segmentation'].values]

这就是我在特使配置中编写服务的方式,有关此内容的更多详细信息,请参见Envoy's Github Repository,其中有多个示例可以更好地理解该过程。