当前位置: 首页 > news >正文

使用 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议详解)

Go 的 net/rpc 默认基于自定义二进制协议,不支持直接通过 HTTP curl 调用;但启用 rpc/jsonrpc 后可暴露 JSON-RPC 1.0 接口,此时可通过 curl 发送标准 JSON-RPC 请求与 Go RPC 服务交互。 go 的 `net/rpc` 默认基于自定义二进制协议,不支持直接通过 http curl 调用;但启用 `rpc/jsonrpc` 后可暴露 json-rpc 1.0 接口,此时可通过 curl 发送标准 json-rpc 请求与 go rpc 服务交互。Go 标准库的 net/rpc 包默认使用私有、基于 TCP 的二进制编码协议(Gob),不兼容 HTTP 协议栈,因此无法直接用 curl 发起常规 HTTP 请求(如 GET/POST)进行调用。这也是你执行 curl -X CONNECT --url localhost:1234/_goRPC 时收到 404 Not Found 的根本原因:该端点并非 HTTP 服务器,而是一个裸 TCP RPC 服务,不理解 HTTP 方法或路径语义。? 正确路径是切换至 net/rpc/jsonrpc 子包——它在保持 net/rpc 服务逻辑不变的前提下,将传输层封装为 JSON-RPC 1.0 格式,并通过标准 HTTP(通常是 POST)承载。注意:虽然协议名为 JSON-RPC,但 Go 的 jsonrpc 实现实际复用 HTTP 连接,且要求使用 POST 方法(非 CONNECT),这是社区常见误区。? 正确的 curl 调用方式(JSON-RPC 1.0)假设你已按如下方式启动了 JSON-RPC 服务(关键:使用 jsonrpc.ServeConn 或 http.HandlerFunc 包装):// server.gopackage mainimport ( "log" "net" "net/http" "net/rpc" "net/rpc/jsonrpc")type Args struct{ A, B int }type Arith intfunc (t *Arith) Multiply(r *Args, ret *int) error { *ret = r.A * r.B return nil}func main() { rpc.Register(new(Arith)) rpc.HandleHTTP() // 注意:此行注册 /_goRPC 路径(仅对 jsonrpc 有效) listener, _ := net.Listen("tcp", ":1234") log.Println("RPC server listening on :1234") http.Serve(listener, nil)}此时服务监听 :1234,并通过 / _goRPC 路径提供 JSON-RPC 接口(由 rpc.HandleHTTP() 自动注册)。你可使用以下 curl 命令调用 Arith.Multiply 方法: Mokker AI AI产品图添加背景

http://www.jsqmd.com/news/825499/

相关文章:

  • 预测性维护模型准确率提升 25%,发那科用 TDengine 释放工业数据价值
  • 基于Alexa技能与AWS Lambda的无服务器支付系统架构实践
  • Python脚本快速GUI化:用guiClaw为数据抓取工具构建桌面界面
  • 基于BLE与NeoPixel的智能眼镜控制:在ATtiny85上实现无线光效交互
  • 基于Arduino Yun与Google Sheets的物联网气象站构建实战
  • Arm CMN-650 CCIX架构配置与优化指南
  • 自建数字保险库ClawVault:端到端加密与全栈技术实践
  • OpenFold实战指南:在Linux系统部署蛋白质结构预测模型
  • 创业团队如何用Taotoken低成本试验多个AI模型
  • 多租户AI助手平台架构:基于FastAPI与OpenAI API的实践
  • OpenHarmony NAPI实战:从ArkTS应用调用C++驱动控制LED
  • Maven组件发布实战:从distributionManagement配置到CI/CD集成
  • AI智能体工作流引擎:从原理到实践,构建高效多智能体协作系统
  • 基于大数据的智能电网负荷预测系统的研究与实现
  • 硬件项目前面板制作:三明治层压与乙烯基贴纸法详解
  • Coral开发板SPI通信实战:从协议原理到MAX31855传感器驱动
  • 2026届最火的五大AI辅助写作神器横评
  • 基于8位MCU双核架构的医疗级心律监护器设计与实践
  • C3SQL:基于大语言模型的文本到SQL生成工具实战指南
  • Eurorack模块面板隐藏式LED技术:Sticker标签实现一体化美学设计
  • 英伟达Blackwell架构解析:如何将大模型训练成本降低一个数量级
  • 基于Adafruit CLUE与BLE CSC服务构建自行车传感器数据采集系统
  • SoC安全验证挑战与Jasper SPV解决方案解析
  • 原生三件套构建极简个人主页:零依赖Web开发实践
  • Claude大模型与Home Assistant融合:打造具备认知智能的家庭自动化系统
  • 基于凸轮从动件机制的自动化装置:从机械原理到软硬件实现
  • 量子通信中的级联环图码技术解析
  • 盘点2026年Q2衡水钢板租赁服务商:为何推荐北京顺建源建筑设备租赁有限公司? - 2026年企业推荐榜
  • BurpSuite中文汉化终极指南:3步打造专业安全测试环境
  • 2026年靠谱的人本机床轴承/长城机床轴承可靠供应商推荐 - 行业平台推荐