go-zero 框架学习

命令

  • 路由

  • JWT

  1. 生成token
func getToken(secreKey string, iat, seconds, userId int64) (string, error) {

    claims := make(jwt.MapClaims)
    claims["exp"] = iat + seconds
    claims["iat"] = iat
    claims["userId"] = userId
    token := jwt.New(jwt.SigningMethodES256)
    token.Claims = claims
    return token.SignedString([]byte(secreKey))
}
  1. 启动中间件
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
    server.AddRoutes(
        []rest.Route{
            {
                Method:  http.MethodGet,
                Path:    "/from/:name",
                Handler: UserHandler(serverCtx),
            },
        },
        rest.WithJwt("秘钥"),
    )
}
  1. jwt 传输, 在header 头部
Authorization: Bearer <token>

server := rest.MustNewServer(c.RestConf, rest.WithUnauthorizedCallback(func(w http.ResponseWriter, r *http.Request, err error) {
        logc.Infof(context.Background(), "WithUnauthorizedCallback")
    }))
  • 中间件
// 自定义的中间件
func CorsMiddleware(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Add("X-Middleware", "static-middleware")
        next(w, r)
    }
}
  • response 输出格式化
func Response(r *http.Request, w http.ResponseWriter, res any, err error) {
    if err != nil {
        body := Body{
            Code: -1,
            Msg:  "",
            Data: nil,
        }
        httpx.WriteJson(w, http.StatusOK, body)
        return
    }
    body := Body{
        Code: 0,
        Msg:  "ok",
        Data: res,
    }
    httpx.WriteJson(w, http.StatusOK, body)
}

  • 日志

如果不初始化,日志按照默认配置

logx.MustSetup(logx.LogConf{})

参考资料

https://go-zero.dev/docs/tutorials/go-zero/log/overview

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容