Server
package main
import (
"encoding/json"
"fmt"
"net/http"
"strconv"
)
func main() {
http.HandleFunc("/add", func(writer http.ResponseWriter, request *http.Request) {
_ = request.ParseForm()
fmt.Println("path: ", request.URL.Path)
a, _ := strconv.Atoi(request.Form["a"][0])
b, _ := strconv.Atoi(request.Form["b"][0])
writer.Header().Set("content-type", "application/json")
res, _ := json.Marshal(map[string]int{
"data": a + b,
})
_, _ = writer.Write(res)
})
_ = http.ListenAndServe(":8081", nil)
}
Client
package main
import (
"encoding/json"
"fmt"
"github.com/kirinlabs/HttpRequest"
)
type Result struct {
Data int `json:"data"`
}
func main() {
fmt.Println(Add(2,3))
}
func Add(a, b int) int {
request := HttpRequest.NewRequest()
response, _ := request.Get(fmt.Sprintf("http://localhost:8081/%s?a=%d&b=%d", "add", a, b))
body, _ := response.Body()
res := Result{}
_ = json.Unmarshal(body, res)
return res.Data
}
只是为了简单的理解一下RPC调用,两段代码都没有对错误进行处理.