根据proto文件生成pb和pb_service文件

2024-05-05 09:38
文章标签 proto 生成 service pb

本文主要是介绍根据proto文件生成pb和pb_service文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

假如有一个HelloWorld.proto文件,内容如下:

syntax = "proto3";option java_package = "ex.grpc";
option objc_class_prefix = "HSW";package helloworld;service Greeter {rpc sayHello (HelloRequest) returns (HelloReply) {}rpc printAge (printAgeRequest) returns (printAgeReply) {}
}message HelloRequest {string name = 1;string city = 2;
}message HelloReply {string message = 1;
}message printAgeRequest {string age = 1;
}message printAgeReply {string text = 1;
}

项目需要根据proto文件生成js文件和service文件

这里需要先下载protoc.exe执行程序,下载地址:https://github.com/protocolbuffers/protobuf/releases

选择protoc-3.12.4-win64.zip下载,安装完成后需要将bin目录添加到环境变量中,然后执行命令

> protoc --version
libprotoc 3.12.4

再在项目中通过npm安装ts-protoc-gen

[project]> cnpm i ts-protoc-gen -S

接着进入到存放proto文件的目录,执行以下命令

protos> protoc --plugin="protoc-gen-ts=/nodejs/experiment/vue-test/node_modules/ts-protoc-gen/bin/protoc-gen-ts.cmd" --ts_out="service=grpc-web:./" ./HelloWorld.proto

即可生成下面四个文件:

HelloWorld_pb.js
HelloWorld_pb_service.js
HelloWorld_pb.d.ts
HelloWorld_pb_service.d.ts

在vue中使用

import { GreeterClient } from "@/assets/protos/HelloWorld_pb_service.js";
import { HelloRequest } from "@/assets/protos/HelloWorld_pb.js";const helloRequest = new HelloRequest();const client = new GreeterClient('http://127.0.0.1:50051');
client.sayHello(helloRequest, {"Content-Type": "application/grpc-web+proto"}, (err, response) => {console.log(err, response)
});

需要安装

> npm i @improbable-eng/grpc-web google-protobuf -S
import { grpc } from "@improbable-eng/grpc-web";
import { Greeter } from "@/assets/protos/HelloWorld_pb_service.js";
import { HelloRequest } from "@/assets/protos/HelloWorld_pb.js";const helloRequest = new HelloRequest();grpc.unary(Greeter.sayHello, {request: helloRequest,host: "http://127.0.0.1:50051",onMessage: (message) => {console.log(message.toObject());},onEnd: (res) => {const { status, statusMessage, headers, message, trailers } = res;if (status === grpc.Code.OK && message) {console.log("all ok. got book: ", message.toObject());}},
});

欢迎关注:http://fenxianglu.cn/

这篇关于根据proto文件生成pb和pb_service文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961389

相关文章

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

SQLServer中生成雪花ID(Snowflake ID)的实现方法

《SQLServer中生成雪花ID(SnowflakeID)的实现方法》:本文主要介绍在SQLServer中生成雪花ID(SnowflakeID)的实现方法,文中通过示例代码介绍的非常详细,... 目录前言认识雪花ID雪花ID的核心特点雪花ID的结构(64位)雪花ID的优势雪花ID的局限性雪花ID的应用场景

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件