1. 负载均衡
import (
"context"
"fmt"
"github.com/micro/go-micro/client"
"github.com/micro/go-micro/client/selector"
"github.com/micro/go-micro/registry"
"github.com/micro/go-micro/registry/etcd"
myhttp "github.com/micro/go-plugins/client/http"
"github.com/micro/go-plugins/registry/consul"
Models "go-micro-study/bak/models"
"io/ioutil"
"log"
"net/http"
)
func callApi2(s selector.Selector) {
myClient := myhttp.NewClient(client.Selector(s),
client.ContentType("application/json"),
)
//请求注册中心里面的服务
request := myClient.NewRequest("prodservice", "/v1/prods", Models.ProdsReq{Size: 1})
var resp Models.ProdListResp
err := myClient.Call(context.Background(), request, &resp)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Data)
return
}
func main() {
etcdReg := etcd.NewRegistry(registry.Addrs("127.0.0.1:2379"))
mySeletor := selector.NewSelector( //负载均衡插件
selector.Registry(etcdReg ),
selector.SetStrategy(selector.Random), //随机
)
callApi2(mySeletor)
}
2.http参数检查:
第三方validator库使用
package main
import (
"gopkg.in/go-playground/validator.v9"
"log"
"micro-tools/AppLib"
"testing"
)
type Users struct {
Username string `validate:"required,min=6,max=20" vmsg:"用户名必须大于6位以上"`
Userpwd string `validate:"required,min=6,max=18" vmsg:"用户密码必须大于6位以上"`
//TestName string `validate:"required,username" vmsg:"用户名不正确"`
Usertags []string `validate:"required,min=1,max=5,unique,dive,usertag" vmsg:"用户标签不合法"`
}
func TestStruct(t *testing.T) {
userTags := []string{"aa", "bb","cc","dd","ee"}
valid := validator.New()
_ = AppLib.AddRegexTag("usertag", "^[\u4e00-\u9fa5a-zA-Z0-9]{2,4}$", valid)
//_ = AppLib