当前位置: 首页 > 知识库问答 >
问题:

从.proto自动生成RESTendpoint

章乐逸
2023-03-14

我在编译.proto文件时遇到问题。希望从.proto文件生成RESTendpoint。下面是代码和错误:syntax=“proto3”;

package pb;

import "google/protobuf/empty.proto";
import "google/api/annotations.proto";

service UrlShortener {
  rpc Hello(HelloRequest) returns (HelloResponse);

  rpc Encrypt(EncryptRequest) returns (EncryptResponse);

  rpc Decrypt(DecryptRequest) returns (DecryptResponse) {
    option (google.api.http) = {
                get: "/{hash}"
            };
  }
}

message HelloRequest {
  string Name = 1;
}

message HelloResponse {
  string Message = 1;
}

message EncryptRequest {
  string OriginalUrl = 1;
}

message EncryptResponse {
  UrlMap ResponseMap = 1;
}

message DecryptRequest {
  string hash = 1;
}

错误:github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis:警告:目录不存在. google/api/annotations.proto:文件未找到.urlshortener.proto:导入"google/api/annotations.proto"未找到或有错误。

请帮助解决这个问题。

我尝试:go get-ugithub.com/grpc-ecosystem/grpc-gateway但它失败说:路径中没有可构建的go源文件。

共有2个答案

芮明知
2023-03-14

找到了解决方案:问题是google/api/annotations已经从早期的路径grpc生态系统/grpc网关/third_party/googleapis移动到了https://github.com/grpc-ecosystem/grpc-gateway/tree/master/third_party/googleapis/google/api.

运行以下命令解决了错误:go get-u github.com/grpc-ecosystem/grpc-gateway/。。。

甄鹏云
2023-03-14

我认为你的定义中有不止一个错误

您缺少定义开头的语法版本:

syntax = "proto3";

有一些未定义的类型

service.proto:32:3: "UrlMap" is not defined.
service.proto:12:40: "DecryptResponse" is not defined.

您正在导入未使用的empty.proto

你可以使用来自

{GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis

然后使用运行:

protoc -I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis -I/usr/local/include -I. service.proto --go_out=plugins=grpc:.

我做了之前的修改,它编译了,所以我有service.pb.go文件

已编辑:

看看这个grpc网关,也许可以帮你https://github.com/grpc-ecosystem/grpc-gateway

 类似资料:
  • 问题内容: 对于我的团队,我想配置maven / eclipse构建以从文件自动生成Java代码(在使用gRPC的项目中)。当前需要运行或(如在插件使用情况页面中)。或添加运行配置以调用maven目标是什么? 每当刷新Eclipse Maven项目(+ )或重新启动IDE时,都会重新构建项目,但项目中不会出现,从而使项目变成红色。因此,需要生成并刷新项目()。UPDATE Eclipse需要在文件

  • 我使用maven插件“org.xolstice.maven.plugins”创建了原型生成的java文件jar文件。它包含所需的所有java文件,并导入到具有maven依赖关系的项目中。无编译问题。执行时,我得到未实现的异常。 但是我不希望这是作为java源代码内的项目.因为生成的源代码有非常巨大的java文件编译它需要很长的时间每次我构建,所以我需要它作为一个jar文件。

  • 问题内容: 有人知道如何从1开始生成,以便下一个对象具有2,依此类推吗? 我尝试了以下方法,但不起作用: 问题答案: 您需要一个 静态的 类成员来跟踪上次使用的索引。确保还实现一个复制构造函数: 更新: 正如@JordanWhite建议的那样,您可能希望使static计数器成为 atomic ,这意味着可以安全地同时使用(即一次在多个线程中使用)。为此,将类型更改为: 增量读取和复位操作变为:

  • 问题内容: 我的主键实体如下所示 当我跑步时,出现错误 无法获取或更新下一个值;嵌套的异常是org.hibernate.exception.SQLGrammerException:无法获取或更新下一个值 但是当我改变为 没有错误抛出。我想在 oracle db 上为每个表生成唯一的主键。 问题答案: 当将新创建的实体插入数据库时,告诉JPA提供者使用表从中获取ID。 当使用Hibernate作为提

  • 我正在努力通过JAVA自动生成SVN标记,需要一些建议。这就是我们手动操作的方式-从SVN repo中检查一个maven项目/插件,并运行一组maven命令(mvn clean test,mvn release:prepare)来生成SVN标记,mvn release:prepare是最后一个命令,它将运行单元测试,生成标记并将其提交给SVN,我正在努力实现这个过程的自动化。 我看了svnkit

  • 我正在开发一个Spring Boot应用程序的后端,该应用程序使用OpenAPI和Swagger通过模式为前端应用程序提供接口。yml文件。当对控制器进行更改时,我们使用swagger ui获取api文档JSON,使用在线swagger编辑器将其转换为yaml,并将结果粘贴到模式中。yml文件 现在,我想让它自动化,这样我们就可以调用一个maven任务来自动生成yaml文件,但我找不到任何mave