摘要: 1.gin里面的中间件如果出错,不可以直接return,这样会把错误消息返回给客户端,应该使用ctx.Abort()方法,才会中断业务代码运行 2.gin结合go-micro的具体步骤是 服务端:创建proto文件,生成对应的pb文件,根据proto编写的规则编写service的具体实现逻辑,启动micro服务并注册到etcd或者consul中,使用micro api添加网关,或者使用第三方工... 阅读全文
posted @ 2020-01-03 21:33 离地最远的星 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 首先理一下思路,使用代码去注册其他api到go-micro体系中,我们就需要在代码中模拟出这样的json数据,并发送给我们的micro Registry服务 { "jsonrpc": "2.0", "method": "Registry.Deregister", "params": [{ "name": "api.jtthink.com.test", ... 阅读全文
posted @ 2020-01-03 20:50 离地最远的星 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 执行完上面的代码看输出我们可以发现,打开了一个8000端口并监听了它,并且把注册服务的这个服务(micro registry)开启的服务本身注册到了etcd中去 开启micro web,可以看到我们开启的这个注册服务的详情 上面的图我们可以看到如果我们想要通过这个registry服务注册服务到etcd中去,我们需要调用它的Registry.Register方法,它规定了通过发送... 阅读全文
posted @ 2020-01-03 19:01 离地最远的星 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 验证数组 package main import ( "fmt" "gopkg.in/go-playground/validator.v9" "log" "micro/AppLib" ) type Users struct { Username string `validate:"required,min=6,max=20" vmsg:"用户名... 阅读全文
posted @ 2020-01-03 16:23 离地最远的星 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 首先重新改造一下我们之前的自定义错误处理函数 package AppLib import ( "fmt" "gopkg.in/go-playground/validator.v9" "reflect" "regexp" ) //封装一个通用的正则方法,省去每次都要写下面这段很长的代码 func AddRegexTag(tagName string, patte... 阅读全文
posted @ 2020-01-03 15:46 离地最远的星 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 编写一个简单的例子来理解一下validator验证器 package main import ( "fmt" "gopkg.in/go-playground/validator.v9" "micro/AppLib" ) type Users struct { Username string `validate:"required"` Userpwd... 阅读全文
posted @ 2020-01-03 14:16 离地最远的星 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 编写数据库初始化函数 package AppInit import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "log" ) var db *gorm.DB func init() { var err error db, err = gorm.Open("m... 阅读全文
posted @ 2020-01-03 13:48 离地最远的星 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 编写Models.proto syntax = "proto3"; package services; import "google/protobuf/timestamp.proto"; //使用第三方proto支持时间类型的参数 message UserModel { int32 user_id = 1; string user_name = 2; string ... 阅读全文
posted @ 2020-01-03 00:43 离地最远的星 阅读(243) 评论(0) 推荐(0) 编辑