go-kit 远程通信

编写client transport 代码
package transport

import (
    "context"
    "encoding/json"
    "errors"
    "mygin/go_study/go-kit/server/endpoint"
    "net/http"
    "strconv"
)

func GetUserInfoRequest(_ context.Context, request *http.Request, r interface{}) error {
    userRequest := r.(endpoint.UserRequest)
    request.URL.Path += "/user/" + strconv.Itoa(userRequest.Uid)
    return nil
}

func GetUserInfoResponse(_ context.Context, res *http.Response) (response interface{}, err error) {
    if res.StatusCode != 200 {
        return nil, errors.New("no data")
    }
    var userResponse endpoint.UserResponse
    err = json.NewDecoder(res.Body).Decode(&userResponse)
    return userResponse, err
}

编写client 代码


func main2() {
    target, _ := url.Parse("http://localhost:8080")
    client := transporthttp.NewClient("GET", target, transport2.GetUserInfoRequest, transport2.GetUserInfoResponse)
    getUserInfo := client.Endpoint()
    resp, err := getUserInfo(context.Background(), endpoint.UserRequest{Uid: 101})
    if err != nil {
        panic(err)
    }
    userResponse := resp.(endpoint.UserResponse)
    println(userResponse.Result)
}

results matching ""

    No results matching ""