我正在尝试编写一个 jsonrpc 服务器,它将接受请求的小写方法名称,例如 Arith.multiply,并将它们正确地路由到相应的大写方法,例如 Arith.Multiply。这可能吗?
PS 它是用于测试的生产服务器的轻量级克隆,API 是固定的,包括小写的方法名称,所以我无法将请求的方法名称更改为大写。
package main
import (
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/gorilla/rpc"
"github.com/gorilla/rpc/json"
)
type Args struct {
A, B int
}
type Arith int
type Result int
func (t *Arith) Multiply(r *http.Request, args *Args, result *Result) error {
log.Printf("Multiplying %d with %d\n", args.A, args.B)
*result = Result(args.A * args.B)
return nil
}
func main() {
s := rpc.NewServer()
s.RegisterCodec(json.NewCodec(), "application/json")
s.RegisterCodec(json.NewCodec(), "application/json;charset=UTF-8")
arith := new(Arith)
s.RegisterService(arith, "")
r := mux.NewRouter()
r.Handle("/rpc", s)
http.ListenAndServe(":1234", r)
}
临摹微笑
相关分类