安装gin
go get -u github.com/gin-gonic/gin
安装go-micro v3
先安装依赖
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
//安装asim/go-micro 这个是go micro 3.0 框架
go get github.com/asim/go-micro/cmd/protoc-gen-micro/v3
安装micro v3
//需要用到Micro 3.0 环境的micro 工具,可以快速构建项目,但是不使用这个库,用下面的
go get github.com/micro/micro/v3
// 下载go micro 3.0 库,下面库没有上面micro 工具
go get github.com/asim/go-micro/v3
搭建项目
1、创建go微服务学习
文件夹
# 先创建go.mod文件,用于管理引用的包
module go微服务学习
go 1.15
2、创建web
和services
文件夹
mkdir go微服务学习
cd go微服务学习
mkdir web services
创建web
-
进入
web
文件夹-
创建
main.go
文件package main import ( "github.com/gin-gonic/gin" "net/http" ) const addr = ":80" func Index(c *gin.Context) { c.JSON(http.StatusOK, map[string]interface{ }{ "message": "index", }) } func main() { r := gin.Default() r.Handle("GET", "/", Index) if err := r.Run(addr); err != nil { fmt.Println("err") } }
然后执行
go run .
启动web服务$ go run . [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /test1 --> myProject/web/handler.Index (3 handlers)
浏览器访问
http://127.0.0.1
, 得到如下响应// 20220103173321 // http://127.0.0.1/test1 { "message": "index" }
-
创建service
-
进入
services
文件夹,执行micro new test1
命令-
移除
go.mod
文件 -
生成pb文件, 下面命令可以在
Makefile
文件中查到protoc --proto_path=. --micro_out=. --go_out=:. proto/test1.proto
-
修改
handler/test1.go
文件import ( "context" log "github.com/micro/micro/v3/service/logger" // test1 "test1/proto" test1 "go微服务学习/services/test1/proto" )
-
修改
main.go
文件package main import ( "go微服务学习/services/test1/handler" pb "go微服务学习/services/test1/proto" service "github.com/asim/go-micro/v3" // "github.com/micro/micro/v3/service"
-