Go Chassis教程三–编写客户端

作者: adm 分类: go 发布时间: 2021-09-27 16:46

1、编写main.go

type Client struct {
}
//在这个方法中,调用上面编写的服务
func (r *Client) SayHi(b *restful.Context) {
	req, _ :=rest.NewRequest(http.MethodGet, "http://RESTServer/sayhello/world", nil)//这里要填写需要调用哪个服务,填写服务名即可,然后就是他的api路径
    restInvoker :=core.NewRestInvoker()//并发安全,可全局使用
	resp, err :=restInvoker.ContextDo(context.TODO(), req)//执行调用,这时go chassis介入,执行一些列用户不可见的计算和操作
	if err != nil {
		log.Println(err)
		return
	}
	b.Write(httputil.ReadBody(resp))//读出服务端body体并直接透传返回
	return
}

func (r *Client) SayHi1(b *restful.Context) {
	req, _ :=rest.NewRequest(http.MethodGet, "http://RESTServer/sayhello1/world", nil)//这里要填写需要调用哪个服务,填写服务名即可,然后就是他的api路径
	restInvoker :=core.NewRestInvoker()//并发安全,可全局使用
	resp, err :=restInvoker.ContextDo(context.TODO(), req)//执行调用这时go chassis介入,执行一些列用户不可见的计算和操作
	if err != nil {
		log.Println(err)
		return
	}
	b.Write(httputil.ReadBody(resp))//读出服务端body体并直接透传返回
	return
}

func (r *Client) URLPatterns() []restful.Route {
	return []restful.Route{
		{Method: http.MethodGet, Path: "/sayhello", ResourceFunc: r.SayHi},
		{Method: http.MethodGet, Path: "/sayhello1", ResourceFunc: r.SayHi1},
	}
}
func main() {
	chassis.RegisterSchema("rest", &Client{})
	//Init framework
	if err := chassis.Init(); err != nil {
		openlog.Error("Init failed." + err.Error())
		return
	}

	chassis.Run()
}

2、chassis.yaml

servicecomb:
  registry:
    address: http://127.0.0.1:30100
  protocols: # what kind of server you want to launch
    rest: #launch a http server
      listenAddress: 127.0.0.1:8000

3、microservice.yaml

servicecomb:
service:
name: RESTClient #name your consumer

4、导入

export CHASSIS_HOME=/home/qiao/www/go/gomall/cn.inzhong.cart/client

5、执行

go run .

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!