现在客户端服务端都创建出来了,接下来要做的就是打通两者
1.user_srv.pd.micro.go
里面
改成
// api "github.com/micro/micro/v3/service/api"
// client "github.com/micro/micro/v3/service/client"
// server "github.com/micro/micro/v3/service/server"
api "github.com/micro/go-micro/v2/api"
client "github.com/micro/go-micro/v2/client"
server "github.com/micro/go-micro/v2/server"
2.编辑 global/global.go
package global
import (
proto "user_api/proto"
"github.com/micro/go-micro/v2/registry"
"github.com/micro/go-plugins/registry/consul/v2"
)
var (
//consul链接
ConsulClient = consul.NewRegistry(registry.Addrs("127.0.0.1:8500"))
//网关链接
UserSrvClient proto.UserSrvService
)
3.创建initialize 目录
mkdir initialize
cd initialize
vim srv_conn.go
package initialize
import (
"user_api/global"
"github.com/micro/go-micro/v2"
"go.uber.org/zap"
proto "user_api/proto"
)
func InitSrvConn() {
consulReg := global.ConsulClient
Services := micro.NewService(
micro.Name("user.client.api"),
micro.Registry(consulReg),
)
userService := proto.NewUserSrvService("user.srv", Services.Client())
zap.S().Debug("测试链接", userService)
global.UserSrvClient = userService
}
编辑日志配置
vim logger.go
package initialize
import "go.uber.org/zap"
func InitLogger() {
logger, _ := zap.NewDevelopment()
zap.ReplaceGlobals(logger)
}
4.编辑main.go
增加
//1. 初始化logger
initialize.InitLogger()
//2. 初始化srv的连接
initialize.InitSrvConn()
package main
import (
"user_api/global"
"user_api/initialize"
"user_api/routers"
"github.com/micro/go-micro/v2/web"
)
func main() {
//1. 初始化logger
initialize.InitLogger()
//2. 初始化srv的连接
initialize.InitSrvConn()
//3. 初始化routers
ginRouter := routers.InitRouters()
consulReg := global.ConsulClient
//注册服务
microService := web.NewService(
web.Name("user.client"),
web.Address(":18001"),
web.Registry(consulReg),
web.Handler(ginRouter),
)
err := microService.Run()
if err != nil {
return
}
}
5.编辑api/user.go
package api
import (
"context"
"net/http"
"user_api/global"
proto "user_api/proto"
"github.com/gin-gonic/gin"
)
func GetUserInfo(ctx *gin.Context) {
res, err := global.UserSrvClient.GetUserInfo(context.TODO(), &proto.RequestUserId{UserId: 1})
if err != nil {
ctx.JSON(http.StatusForbidden,
gin.H{
"code": 200,
"err": err,
"Client": global.UserSrvClient,
})
return
}
ctx.JSON(http.StatusOK,
gin.H{
"code": 200,
"total": "ok",
"accounts": res,
})
ctx.JSON(http.StatusOK,
gin.H{
"code": 200,
"total": "ok",
"accounts": "获取用户信息",
})
}
重新启动,main.go,此时两个服务已打通
http://127.0.0.1:18001/getUserInfo/