mkdir my_test_demo/my_book_sys/user/rpc -p mkdir my_test_demo/my_book_sys/user/model -p cd my_test_demo go mod init my_test_demo go mod tidy 编写api文件 并生成 go 代码 book.api 定义book api GET /search/do 查询书籍接口,使用jwt: Auth进行标识 通过请求书名,鉴权完毕之后,响应响应书名...
编写logic,调用rpc服务接口 用户登录:go res, err := l.svcCtx.UserRpc.UserLogin(l.ctx, &userclient.UserLoginRequest{ Username: req.Username, Password: req.Password, }) if err != nil { return "", errors.New("login fail") } token, err := jwts.GenToken(&jwts.JwtPayLoad{ UserID: ...
配置文件中加入如下配置,用于jwt鉴权以及mysql、redis连接配置的获取 package config import ( "github.com/zeromicro/go-zero/core/stores/cache" "github.com/zeromicro/go-zero/zrpc" ) type Config struct { zrpc.RpcServerConf CheckinRpcConf zrpc.RpcClientConf JwtAuthstruct{ AccessSecret string AccessEx...
在 api 服务中我们使用 go-zero 框架自带的 jwt 实现鉴权验证。那么接下里我们就说说 rpc 服务的 auth 验证。 go-zero 框架rpc 服务的 auth 验证原理是,客户端访问 rpc 服务需要携带 App 标识以及 Token 值,rpc 服务会从指定的 Redis 服务中验证 App 标识和 Token 值是否正确。所以客户端的 App 标识,...
login,err:=l.svcCtx.UserRpc.Login(l.ctx,&userclient.LoginRequest{ LoginName:req.LoginName, Password:req.Password, }) iferr!=nil{ returnnil,err } now:=time.Now().Unix() login.Token,err=l.getJwtToken(l.svcCtx.Config.Auth.AccessSecret,now,l.svcCtx.Config.Auth.AccessExpire,int64(login...
创建RPC 服务: package service import ( "context" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/service" "github.com/zeromicro/go-zero/core/service/rpc" "github.com/zeromicro/go-zero/core/service/rpc/pb" ) type UserServer struct { logx.Logger } func (s...
1. 客户端获取JWT Token 我们定义一个协议供客户端调用获取JWT token,我们新建一个目录jwt然后在目录中执行goctl api -o jwt.api,将生成的jwt.api改成如下: type JwtTokenRequest struct { } type JwtTokenResponse struct { AccessToken string `json:"access_token"` ...
一、Go-Zero框架优势 Go-Zero集成了RPC、RESTful API、服务发现、负载均衡等微服务所需的各项基础设施,通过简化开发流程,帮助开发者快速构建稳定、高效的微服务应用。其内置的高性能RPC框架支持HTTP和gRPC通信,确保服务间调用的高效与稳定。此外,Go-Zero还提供了代码生成工具、日志记录、性能监控等功能,极大地提高了...
Go-Zero 是一个基于 Go 语言的微服务开发框架。它旨在提供简单、高效和可靠的微服务开发解决方案。Go-Zero 主要功能包括 RPC、缓存、限流、熔断、监控等。相较于其他 Go 框架,如 Gin 或 Beego,Go-Zero 更加专注于微服务开发,并提供了更多的开箱即用的功能。
最上面是 api 网关层。go-zero 需要 api 网关层来代理请求,把 request 通过 gRPC 转发给对应的 rpc 服务去处理。这块把具体请求转发到对应的 rpc 服务的业务逻辑,需要手写。 接下来是 rpc 服务层。上图 rpc 服务中的 user 就是接下来向大家演示的模块。每个 rpc 服务可以单独部署。服务启动后会把相关信息注册...