新闻中心
Golang如何使用gRPC Unary模式调用服务_Golang gRPC Unary调用开发实践
首先定义Protobuf接口并生成Go代码,然后实现gRPC服务端和客户端,最后启动服务并调用SayHello方法,输出“Response: Hello, Alice”,完成Unary调用流程。

在Go语言中使用gRPC进行服务间通信,Unary模式是最基础、最常用的调用方式。它对应“一元调用”,即客户端发送一个请求,服务器返回一个响应。本文将带你从零开始实践Golang中gRPC Unary调用的完整开发流程。
定义Protobuf接口
要使用gRPC,首先需要定义服务接口和消息结构。创建service.proto文件:
syntax = "proto3";
package example;
// 定义请求消息
message HelloRequest {
string name = 1;
}
// 定义响应消息
message HelloResponse {
string message = 1;
}
// 定义服务
service Greeter {
rpc SayHello(HelloRequest) returns (HelloResponse);
}
使用protoc工具生成Go代码:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
service.proto
实现gRPC服务端
编写服务端逻辑,注册并启动gRPC服务器:
package main
import (
"context"
"log"
"net"
 "google.golang.org/grpc"
 pb "your-module-path/proto"
)
type server struct {
pb.UnimplementedGreeterServer
}
func (s *server) SayHello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloResponse, error) {
return &pb.HelloResponse{
Message: "Hello, " + req.GetName(),
}, nil
}
func main() {
lis, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
pb.RegisterGreeterServer(s, &server{})
log.Println("gRPC server listening on :50051")
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
编写gRPC客户端
客户端通过连接服务端,调用Unary方法SayHello:
package main
import (
"context"
"log"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
pb "your-module-path/proto"
)
func main() {
// 建立与服务端的连接
conn, err := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
// 创建客户端实例
client := pb.NewGreeterClient(conn)
// 构造请求
req := &pb.HelloRequest{Name: "Alice"}
// 发起Unary调用
resp, err := client.SayHello(context.Background(), req)
if err != nil {
log.Fatalf("could not greet: %v", err)
}
log.Printf("Response: %s", resp.GetMessage())
}
运行与验证
启动服务端:
go run server.go
N世界
一分钟搭建会展元宇宙
138
查看详情
另开终端运行客户端:
go run client.go
预期输出:
Response: Hello, Alice
说明gRPC Unary调用成功完成。
基本上就这些。只要定义好Proto、生成代码、实现服务和调用,就能快速搭建gRPC通信。注意错误处理和连接管理,在生产环境中建议启用TLS并设置超时。
以上就是Golang如何使用gRPC Unary模式调用服务_Golang gRPC Unary调用开发实践的详细内容,更多请关注其它相关文章!
# 正则表达式
# seo品牌推广如何做
# 顶尖的seo外包广告
# 官方网站优化活动
# seo 友链交换过程
# 沈阳浑南网站优化
# 磐安县网站建设加盟
# 家电清洗36节营销推广
# 皇姑区网站建设资费
# 洛阳营销推广外包
# 江津区网站获客推广
# 要使
# 带你
# 解决问题
# go
# 中文网
# 相关文章
# 就能
# 如何使用
# 客户端
# 服务端
# red
# google
# ai
# 工具
# go语言
# golang
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
抖音怎么赚钱_抖音创作者变现方法与途径指南
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
J*aScript中正确使用querySelectorAll与复杂CSS选择器
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
AO3同人作品网入口 AO3搜索引擎官网永久地址
React Router 嵌套组件中 URL 重定向问题的解决方案
照顾宝贝2小游戏点击立即在线玩
c++20的std::jthread是什么_c++可中断线程与RAII式管理
《刺客信条:影》PS5 Pro和Switch 2画面对比
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
C++ map遍历方法大全_C++ map迭代器使用总结
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
J*a里如何使用forEach遍历Map_Map遍历方法说明
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
excel如何生成目录 excel一键生成工作表目录超链接
极兔快递快件信息查询系统 极兔快递官网运单号追踪
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
J*aScript生成器_j*ascript异步迭代
虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作
jQuery Mask 插件中实现电话号码固定前导零的教程
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
Archive of Our Own官网直达 AO3最新可用地址一览
漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
composer的"require-dev"部分是用来做什么的?
J*aScript中针对特定容器内图片动画的实现教程
《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!
Log4j Console Appender性能瓶颈与高并发优化策略
使用Pandas转换并合并DataFrame:多列映射至统一结构
Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】
yy漫画网页版官方入口_yy漫画官网登录页面链接
Python多版本共存与虚拟环境管理深度指南
如何使 Jest 模拟函数默认抛出错误以提高测试效率
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析
火锅吃太多会怎样 火锅吃太多会上火吗
html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】
整合Supabase认证与Django模型:跨模式迁移的解决方案
TikTok网页版直接登录 TikTok网页端官方平台入口
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
漫蛙2漫画入口 漫蛙正版网页漫画直达网址
怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
FullCalendar 自定义按钮样式定制指南
曝R星经典之作开发图 设计简陋但信息密集!
知音漫客官网漫画下载_知音漫客网页版阅读记录
C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航


2025-11-28
浏览次数:次
返回列表