3

ゴリラ Web ツールキットを使用して単純な RPC API を作成することを調査しています。私は彼らのドキュメントの例を使用しており、Chrome でAdvanced Rest Clientを使用してテストし、使用しています

http://localhost:1111/api/ 

そして、次の RAW JSON ペイロードを POST します。

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

これはサーバーに到達し、ログに記録しているため (以下のコードを参照)、200 OK 応答を受け取ります。ただし、「応答にデータが含まれていません」というメッセージが表示されます

以下の Say メソッドで定義されている JSON 応答メッセージを期待しています。問題が何であるかについて誰か提案がありますか?

package main

import (
    "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)
}
4

1 に答える 1