代码拉取完成,页面将自动刷新
go micro项目
go-micro,gin,gorm构成的微服务项目
1.api-service接收外部http请求,gin做路由对请求进行分发。
2.product-service是业务实现,做为RPC服务端供api-service调用。数据层使用gorm
1.gin继承和路由支持。由于gin主要做为路由使用,非特殊情况不建议使用重度的框架
2.参数验证,增加自定义异常信息标签errmsg,简化参数异常校验,此信息会返回给客户端。比较复杂的验证可以在业务中判断。
type Product struct {
ProdId int32 `form:"prodId" json:"prodId"`
ProdName string `form:"prodName" json:"prodName" binding:"required,gte=4,lte=32" errmsg:"prodName参数不合法"`
}
3.http响应封装
ctrl.ResponseSuccess(ctx) //返回成功{"code":200,"message":"操作成功"}
ctrl.ResponseFailed(ctx, 4000, "prodId参数不能为空") //返回异常,自定义错误信息
ctrl.ResponseData(ctx, prodResp.Data) //返回正常对象:{"code":200,"message":"操作成功","data":""}
ctrl.Response(ctx, prodResp.Code, prodResp.Data) //返回自定义状态码和数据对象
4.grpc错误码封装,将其返回给调用方,明确下游服务异常信息,同时返回给客户端
resp.Code = s.FailedMessage(5001, "查询商品列表失败", err.Error())
5.gorm支持,读写分离支持
type DBManager struct {
master *gorm.DB //主库
slave *gorm.DB //从库,读库
//....可扩展多实例
}
//调用
datasource.GetDB().Find()
datasource.GetDBSlave().Find()
6.grpc客户端管理,服务启动时统一注册
//统一注册grpc client
...
middleware.RegisterServiceClient()
//调用时
...
prodRpcClient := middleware.GetProductRpcClient()
prodResp, _ := prodRpcClient.UpdateProduct(context.Background(), &prodReq)
环境变量设置:
go env
$ go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\admin\AppData\Local\go-build
set GOENV=C:\Users\admin\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\gopath
set GOPRIVATE=
set GOPROXY=https://goproxy.io
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\admin\AppData\Local\Temp\go-build704709586=/tmp/go-build -gno-record-gcc-switches
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。