为了账号安全,请及时绑定邮箱和手机立即绑定

gorilla/rpc JSON RPC 服务无响应

gorilla/rpc JSON RPC 服务无响应

Go
jeck猫 2021-06-08 13:00:52
我正在研究使用gorilla web 工具包来创建一个简单的 RPC API。我正在使用他们文档中的示例,我正在Chrome 中使用Advanced Rest Client进行测试并使用http://localhost:1111/api/ 并发布以下 RAW JSON 有效负载:{"method":"HelloService.Say","params":[{"Who":"Test"}]}这到达服务器,我在记录它时知道这一点(见下面的代码),我得到 200 OK 响应。但是我收到“响应不包含任何数据”我期待在下面的 Say 方法中定义的 JSON 回复消息。有没有人对问题是什么有任何建议?package mainimport (    "gorilla/mux"    "gorilla/rpc"    "gorilla/rpc/json"    "log"    "net/http")  type HelloArgs struct {    Who string}type HelloReply struct {    Message string}type HelloService struct{}func (h *HelloService) Say(r *http.Request, args *HelloArgs, reply *HelloReply) error {    log.Printf(args.Who)    reply.Message = "Hello, " + args.Who + "!"    log.Printf(reply.Message)    return nil}func main() {    r := mux.NewRouter()        jsonRPC := rpc.NewServer()    jsonCodec := json.NewCodec()    jsonRPC.RegisterCodec(jsonCodec, "application/json")    jsonRPC.RegisterCodec(jsonCodec, "application/json; charset=UTF-8") // For firefox 11 and other browsers which append the charset=UTF-8    jsonRPC.RegisterService(new(HelloService), "")    r.Handle("/api/", jsonRPC)      http.ListenAndServe(":1111", r)}
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

这是因为 gorilla/rpc/json 实现了 JSON-RPC,它在请求中需要三个参数:methodparamsid

JSON-RPC 中没有 id 的请求称为通知并且没有响应。

检查规范以获取更多详细信息。

因此,在您的情况下,您需要使用以下 JSON:

{"method":"HelloService.Say","params":[{"Who":"Test"}], "id":"1"}


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 413 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信