【问题标题】:how to add static(html,js) files for grpc如何为 grpc 添加静态(html,js)文件
【发布时间】:2021-10-04 23:22:22
【问题描述】:

我有一个 grpc 客户端和服务器。我有一个原型文件。我正在使用 grpc 网关,我想为客户端使用 html。有一个路径localhost:8081/test,当我通过这条路径时,我希望它是一个 html 文件。 如何告诉处理程序在响应中提供 html 文件? 处理程序应该是什么样的?

syntax = "proto3";

option go_package = "/go_proto";
package api;

import "google/api/annotations.proto";

service authorization{
  rpc Test(testRequest) returns (testResponse){
    option(google.api.http) = {
      get: "/test"
    };
  }
   
}

message testRequest{
}

message testResponse{
  int32 arg1 = 1;
}

【问题讨论】:

    标签: go grpc handler proto


    【解决方案1】:

    如果我正确理解你的问题,你不能(直接)。

    gRPC Gateway 是将 gRPC 服务公开为 (JSON) REST API 的一种方式(Envoy 的 gRPC-JSON transcoder 是另一种方式)。

    在您的示例中,上述解决方案将使您能够针对 /test 进行 HTTP GET 调用,返回 testResponse ({"arg1":...}) 的 JSON 表示。

    如果您想提供 HTML,请参阅 Adding custom routes to the mux 这将允许您编写一个提供 HTML 的处理程序。

    注意 此 HTML 处理程序可能包含使用例如fetchGET /test端点。

    也请查看gRPC-Web。这需要 Node.JS,但它为 JavaScript 提供了一个 gRPC 客户端,作为上述 REST 客户端的替代方案。

    如果您想使用 REST API 公开 gRPC 服务,请使用 gRPC Gateway 或 Envoy 的 gRPC-JSON transcoder。这使您能够拥有使用 gRPC REST 的客户端。

    如果您只想拥有 gRPC 客户端,gRPC-Web 也可以让 Node.JS 开发人员访问您的 gRPC 服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-10
      • 2021-03-14
      • 2011-04-25
      • 2020-05-14
      相关资源
      最近更新 更多