首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在调用gRPC网站的客户端中获取405 http错误

在调用gRPC网站的客户端中获取405 http错误
EN

Stack Overflow用户
提问于 2019-05-15 20:28:03
回答 1查看 524关注 0票数 2

从rest客户端调用gRPC服务时,我得到了http错误代码405。

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

REST客户端

代码语言:javascript
运行
复制
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客户端

代码语言:javascript
运行
复制
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响应。

EN

回答 1

Stack Overflow用户

发布于 2019-05-16 16:59:10

当前的浏览器本身并不支持grpc。因此,我尝试使用envoy (由lyft提供)的sidecar代理,它作为我的grpc后端的接口。

代码语言:javascript
运行
复制
...
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上找到,他们有多个例子来更好地理解这个过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56149367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档