Go Micro Hello Service 快速入门:用 30 行代码构建你的第一个 HTTP 服务
后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载本篇技术指南以 go-micro 官方文档中的 Hello Service 示例为核心带你从零构建一个可通过 HTTP 调用的最小服务。读完你将掌握 go-micro 服务的四步生命周期创建 → 初始化 → 注册 Handler → 运行、Micro-Endpoint头的调用原理以及如何通过micro.Address等选项控制监听地址。文中的每一处代码和参数都可在当前仓库源码中找到对应实现可直接复制运行。服务代码一个最小可运行的 Go Micro 服务Hello Service 是 go-micro 最经典的入门示例它定义了一个Say服务暴露一个Say.Hello方法接收一个{name: ...}请求并返回问候语。完整代码如下与 官方示例文档 保持一致package main import ( context go-micro.dev/v6 ) type Request struct { Name string json:name } type Response struct { Message string json:message } type Say struct{} func (h *Say) Hello(ctx context.Context, req *Request, rsp *Response) error { rsp.Message Hello req.Name return nil } func main() { svc : micro.NewService(helloworld) svc.Init() svc.Handle(new(Say)) svc.Run() }这份代码虽然只有 30 行却完整演示了 go-micro 服务的核心编程模型包含四个关键环节micro.NewService(helloworld)以服务名创建服务。在 micro.go 中NewService是官方推荐的标准构造函数其实现等价于service.New(service.Name(name))服务名会透传给底层 server 用于服务注册与发现。svc.Init()初始化服务。根据 service/service.go 的实现Init首次调用时会解析命令行 flags--registry、--transport、--broker等并自动将服务 store 按service/{name}命名空间隔离。svc.Handle(new(Say))注册 Handler。Handle内部通过s.opts.Server.NewHandler(v)基于反射解析出Say.Hello端点endpoint再注册到 RPC 路由表。svc.Run()启动服务并阻塞等待信号或 context 取消收到TERM/INT/QUIT信号后优雅停止见 service/service.go。认识 Handler 方法签名Hello的方法是 go-micro RPC 的标准签名context.Context传递元数据req为请求指针rsp为响应指针返回值error表示调用是否成功func (h *Say) Hello(ctx context.Context, req *Request, rsp *Response) error这种入参指针 出参指针的约定与 protobuf 服务完全一致意味着同一个 Handler 既可以接受 curl 的 JSON HTTP 调用也可以接受 go-micro Client 的强类型 RPC 调用为后续服务演进保留了空间。运行服务在包含上述main.go的模块目录下直接运行go run main.go启动后 go-micro 默认的 RPC server见 server/rpc_server.go 中的NewRPCServer会开始监听并提供 HTTP 兼容的传输能力。默认监听地址未指定时服务会自动选择一个可用端口如需固定端口见下文「固定服务地址」一节。仓库中已内置了一份带日志与错误处理的完整实现 examples/hello-world/main.go并在 examples/hello-world/README.md 中给出了运行与测试说明可作为参考对照。调用服务Micro-Endpoint 头的妙用服务启动后用 curl 发起一次 POST 请求即可完成调用curl -XPOST \ -H Content-Type: application/json \ -H Micro-Endpoint: Say.Hello \ -d {name: Alice} \ http://127.0.0.1:8080成功时返回{message: Hello Alice}这里的核心是Micro-Endpoint: Say.Hello请求头。它由 transport/headers/headers.go 定义Endpoint Micro-Endpoint作用是在 HTTP 请求中显式声明要调用的 RPC 端点。底层原理如下请求到达后go-micro 的 HTTP 传输层会把请求解析为内部codec.Message而 server/rpc_codec.go 中的getHeaders会从消息头提取端点m.Id set(m.Id, headers.ID) m.Error set(m.Error, headers.Error) m.Endpoint set(m.Endpoint, headers.Endpoint) m.Method set(m.Method, headers.Method) m.Target set(m.Target, headers.Request) // 兼容兜底未显式指定 Endpoint 时回退到 Method if len(m.Endpoint) 0 { m.Endpoint m.Method }随后 server/rpc_server.go 从消息头取出endpoint路由到Say.Hello对应的 Handler 执行。也就是说Micro-Endpoint头就是 HTTP 世界与 go-micro RPC 路由之间的桥把 JSON 请求按名称精确投递到目标方法。用 micro CLI 调用如果安装了 micro CLI也可以使用 RPC 风格的调用方式见 examples/hello-world/README.mdmicro call helloworld Say.Hello {name: Bob}其中第一个参数是服务名helloworld即NewService传入的名称第二个是端点名第三个是 JSON 请求体。固定服务地址micro.Address 选项默认情况下服务监听地址是自动分配的。若希望固定监听端口例如8080便于与上面的 curl 命令配合在创建服务时传入micro.Address选项svc : micro.NewService(helloworld, micro.Address(:8080), )Address选项定义在 service/options.go其实现是将地址透传给底层 serverfunc Address(addr string) Option { return func(o *Options) { _ o.Server.Init(server.Address(addr)) } }注意:8080的写法表示监听本机所有网卡的 8080 端口等价于0.0.0.0:8080。更多常用选项Address只是众多服务选项之一。从 service/options.go 可以看到 go-micro 还提供了大量可组合的选项常用包括选项作用源码位置micro.Name(xxx)设置服务名NewService第一个参数已隐式传入service/options.gomicro.Address(:8080)固定监听地址service/options.gomicro.Version(v1.0.0)服务版本用于注册与路由service/options.gomicro.Metadata(map[string]string{...})附加服务元数据service/options.gomicro.Registry(r)替换服务注册中心如 Consul、etcdservice/options.gomicro.Transport(t)替换传输层如 gRPC、NATSservice/options.gomicro.RegisterTTL/RegisterInterval服务注册的 TTL 与续约间隔service/options.go这些选项在创建时叠加传入即可例如svc : micro.NewService(helloworld, micro.Address(:8080), micro.Version(v1.0.0), )从示例到真实项目下一步Hello Service 展示了 go-micro 的最小闭环但它只是一个起点。基于它你可以自然延伸出真实项目所需的能力增加日志与错误处理参考仓库中的完整版 examples/hello-world/main.go它包含log.Printf请求日志与log.Fatal错误处理调用其他服务通过svc.Client()发起 RPC 调用可参考 RPC Client 指南接入注册中心与消息总线搭配 Consul、etcd、NATS 等插件使用相关说明见 registry-consul 示例 与 pubsub-nats 示例理解服务生命周期与优雅停机Run()的信号处理与BeforeStart/AfterStop钩子可参考 service/service.go 及 graceful-shutdown 示例迁移到 AI 原生服务go-micro 还提供micro.NewAgent、micro.NewFlow等更高层抽象与本服务共享同一套底层基础设施见 micro.go。先把 Hello Service 跑起来你就已经掌握了 go-micro 服务开发最核心的骨架——剩下的能力都可以在这个骨架上逐步叠加。赞分享后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载相关推荐gRPC-Go Hello World 快速入门运行你的第一个 gRPC 服务gRPC Go Hello World 快速入门运行你的第一个 gRPC 服务 本文以 gRPC Go 仓库中的 helloworld 示例 example后端RPC框架不装客户端10分钟解析9大网盘直链网盘直链下载助手用户脚本完整指南不装客户端10分钟解析9大网盘直链网盘直链下载助手用户脚本完整指南 网页版下载按钮置灰弹窗要装客户端几个 G 的素材包卡在分享页里。用户脚本「网盘直链下前端Go Micro 快速入门指南5分钟创建你的第一个微服务 Go Micro 快速入门指南5分钟创建你的第一个微服务 Go Micro 是一个功能强大的 Go微服务框架 专门为构建分布式系统而设计。如果你正在寻后端微服务AI AgentRPC框架上一篇2025最全实践Tailwind Next.js博客模板升级Tailwind CSS v4完全指南下一篇解决EF Core 9.0中JSON嵌套实体映射的5个致命异常与对应方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

gbrain 脑库文件归档规则(Repo Architecture):以主题为中心的文件归档决策协议

gbrain 脑库文件归档规则(Repo Architecture):以主题为中心的文件归档决策协议

人工智能RAGAgent 记忆MCP 服务知识管理 【免费下载链接】gbrain Garrys Opinionated OpenClaw/Hermes Agent Brain 项目地址: https://gitcode.com/gh_mirrors/gb/gbrain 点击查看 免费下载 导读 repo-architecture 是 gbrain 技能体系中专门回答"这份新内容…

2026/11/8 21:22:12 阅读更多 →
Crystal 1.19 版本解析:Sync 并发原语、宏系统增强与运行时可靠性的全面升级

Crystal 1.19 版本解析:Sync 并发原语、宏系统增强与运行时可靠性的全面升级

编程语言编译器标准库语言运行时 【免费下载链接】crystal The Crystal Programming Language 项目地址: https://gitcode.com/gh_mirrors/cr/crystal 点击查看 免费下载 本文以 doc/changelogs/v1.19.md 为主线,系统梳理 Crystal 语言 1.19.0 / 1.19.1…

2026/10/15 13:51:14 阅读更多 →
手把手教你用 OpenToonz 完成第一部 2D 动画:5 步导出 3 秒动画视频

手把手教你用 OpenToonz 完成第一部 2D 动画:5 步导出 3 秒动画视频

手把手教你用 OpenToonz 完成第一部 2D 动画:5 步导出 3 秒动画视频 【免费下载链接】opentoonz OpenToonz - An open-source full-featured 2D animation creation software 项目地址: https://gitcode.com/GitHub_Trending/op/opentoonz 想给宠物做个动画&…

2026/10/15 14:15:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/8 14:17:55 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/8 1:35:05 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻