title: "如何使用 curl 调用 Go 标准库 JSON-RPC 服务:请求构造与最佳实践"
description: "本文详解如何使用 curl 等通用 HTTP 工具跨语言调用 Go net/rpc 服务,重点基于 rpc/jsonrpc 子包实现的 JSON-RPC 1.0 协议:服务端需显式注册 / _goRPC_ 路由并调用 jsonrpc.ServeHTTP,禁用默认 Gob 协议;客户端须用 curl -X POST -H "Content-Type: application/json" 发送标准 JSON-RPC 请求(含 method、params、id 字段),注意路径末尾下划线不可省略,响应为 JSON 格式,支持调试与多语言集成。"
tags: [golang, JSON-RPC, curl, net/rpc, HTTP API]
如何使用 curl 调用 Go 标准库 JSON-RPC 服务:请求构造与最佳实践
原文地址: https://88box.top 生成时间: 2026-05-20 01:02:29
如何通过 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议) - hey99 知识搜索引擎
精选文章
如何通过 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议)
本文详解如何使用 curl 等通用 http 工具跨语言调用 go net/rpc 服务,重点基于 rpc/jsonrpc 实现的 json-rpc 1.0 协议,涵盖请求构造、序列化规则、常见错误及最佳实践。若需通过 curl 或其他非 Go 客户端调用,必须启用 rpc/jsonrpc 子包提供的 JSON-RPC 1.0 支持——它将 RPC 请求/响应封装为标准 JSON 格式,并通过 HTTP POST(而非 CONNECT)传输。
更新于 2026-05-19 16:47
rpc
golang
json
后端
开发语言
本文详解如何使用 curl 等通用 HTTP 工具跨语言调用 Go net/rpc 服务,重点基于 rpc/jsonrpc 实现的 JSON-RPC 1.0 协议,涵盖请求构造、序列化规则、常见错误及最佳实践。 本文详解如何使用 curl 等通用 http 工具跨语言调用 go net/rpc 服务,重点基于 rpc/jsonrpc 实现的 json-rpc 1.0 协议,涵盖请求构造、序列化规则、常见错误及最佳实践。Go 标准库的 net/rpc 默认采用自定义二进制协议(Gob),不兼容 HTTP 直接交互。若需通过 curl 或其他非 Go 客户端调用,必须启用 rpc/jsonrpc 子包提供的 JSON-RPC 1.0 支持——它将 RPC 请求/响应封装为标准 JSON 格式,并通过 HTTP POST(而非 CONNECT)传输。? 正确的服务端配置(关键前提)首先,服务端需显式注册 JSON-RPC 处理器,而非默认的 Gob RPC:package mainimport ( "log" "net/http" "net/rpc" "net/rpc/jsonrpc")type Args struct{ A, B int }type Quotient struct{ Quo, Rem int }type Arith intfunc (t Arith) Multiply(args Args, reply int) error { reply = args.A * args.B return nil}func main() { rpc.Register(new(Arith)) rpc.HandleHTTP() // 注册 /goRPC 路由(用于 Gob) // ? 关键:为 JSON-RPC 单独注册处理器 http.Handle("/_goRPC", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 设置 Content-Type 避免客户端解析失败 w.Header().Set("Content-Type", "application/json") jsonrpc.ServeHTTP(w, r) })) log.Println("RPC server listening on :1234") log.Fatal(http.ListenAndServe(":1234", nil))}?? 注意:/goRPC(末尾带下划线)是 Go jsonrpc 包约定的默认路径,不可省略或修改;而 /_goRPC(无下划线)仅用于 Gob 协议,curl 无法直接通信。? 正确的 curl 请求格式(POST + JSON)curl 必须使用 POST 方法(不是 CONNECT),并发送符合 JSON-RPC 1.0 规范的请求体: 幻导航网 发现优质实用网站,开启网络探索之旅!
查看原文
🏷 标签: golang, JSON-RPC, curl, net/rpc, HTTP API