From 4025e353416edd214ab902df32d00a59758cc68b Mon Sep 17 00:00:00 2001 From: dfz <554981957@qq.com> Date: Sat, 4 Jan 2025 17:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=9B=B8=E5=85=B3=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/web.go | 136 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 routers/web.go diff --git a/routers/web.go b/routers/web.go new file mode 100755 index 0000000..f1275db --- /dev/null +++ b/routers/web.go @@ -0,0 +1,136 @@ +package routers + +import ( + "github.com/gin-contrib/pprof" + "github.com/gin-gonic/gin" + + // "go.uber.org/zap" + "goskeleton/app/global/consts" + "goskeleton/app/global/variable" + "goskeleton/app/http/controller/captcha" + "goskeleton/app/http/middleware/authorization" + "goskeleton/app/http/middleware/cors" + validatorFactory "goskeleton/app/http/validator/core/factory" + // "goskeleton/app/utils/gin_release" + // "net/http" +) + +func InitWebRouter_Co() *gin.Engine { + var router *gin.Engine = gin.Default() + // 日志显示在控制台 + pprof.Register(router) + + //根据配置进行设置跨域 + if variable.ConfigYml.GetBool("HttpServer.AllowCrossDomain") { + router.Use(cors.Next()) + } + + // 创建一个验证码路由 + verifyCode := router.Group("captcha") + { + // 验证码业务,该业务无需专门校验参数,所以可以直接调用控制器 + verifyCode.GET("/", (&captcha.Captcha{}).GenerateId) // 获取验证码ID + verifyCode.GET("/:captcha_id", (&captcha.Captcha{}).GetImg) // 获取图像地址 + verifyCode.GET("/:captcha_id/:captcha_value", (&captcha.Captcha{}).CheckCode) // 校验验证码 + } + // 创建一个后端接口路由组 + backend := router.Group("/admin/") + { + + // 【不需要token】中间件验证的路由 用户注册、登录 + noAuth := backend.Group("users/") + { + // 关于路由的第二个参数用法说明 + // 1.编写一个表单参数验证器结构体,参见代码: app/http/validator/web/users/register.go + // 2.将以上表单参数验证器注册,遵守 键 =》值 格式注册即可 ,app/http/validator/common/register_validator/web_register_validator.go 20行就是注册时候的键 consts.ValidatorPrefix+"UsersRegister" + // 3.按照注册时的键,直接从容器调用即可 :validatorFactory.Create(consts.ValidatorPrefix+"UsersRegister") + noAuth.POST("register", validatorFactory.Create(consts.ValidatorPrefix+"UsersRegister")) // ok + // 不需要验证码即可登陆 + noAuth.POST("login", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogin")) // ok + + // 如果加载了验证码中间件,那么就需要提交验证码才可以登陆(本质上就是给登陆接口增加了2个参数:验证码id提交时的键:captcha_id 和 验证码值提交时的键 captcha_value,具体参见配置文件) + //noAuth.Use(authorization.CheckCaptchaAuth()).POST("login", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogin")) + + // 获取公钥,用于密码等敏感信息的加密 + noAuth.POST("publickey", validatorFactory.Create(consts.ValidatorPrefix+"PublicKey")) + } + + // 刷新token + refreshToken := backend.Group("users/") + { + // 刷新token,当过期的token在允许失效的延长时间范围内,用旧token换取新token + refreshToken.Use(authorization.RefreshTokenConditionCheck()).POST("refreshtoken", validatorFactory.Create(consts.ValidatorPrefix+"RefreshToken")) + } + // TODO:linlnf + // 人工智能识别相关 + aiRecognition := backend.Group("ai_recognition/") + { + // 请求图片文字识别 + aiRecognition.POST("pic_recognition", validatorFactory.Create(consts.ValidatorPrefix+"PicRecognition")) + // 请求语音识别 + aiRecognition.POST("voc_recognition", validatorFactory.Create(consts.ValidatorPrefix+"VocRecognition")) + } + // TODO:linlnf + // 人工智能文档处理相关 + aiDoc := backend.Group("ai_doc/") + { + // 请求优化文字 + aiDoc.POST("doc_refine", validatorFactory.Create(consts.ValidatorPrefix+"DocRefine")) + } + + // 智能排版相关 + aiLayout := backend.Group("ai_layout/") + { + // 请求样式生成 + aiLayout.POST("style_generate", validatorFactory.Create(consts.ValidatorPrefix+"StyleGenerate")) + // 请求排版 + aiLayout.POST("layout_generate", validatorFactory.Create(consts.ValidatorPrefix+"LayoutGenerate")) + } + + // 【需要token】中间件验证的路由 + backend.Use(authorization.CheckTokenAuth()) + { + // 用户组路由 + users := backend.Group("users/") + { + // 查询 ,这里的验证器直接从容器获取,是因为程序启动时,将验证器注册在了容器,具体代码位置:App\Http\Validator\Web\Users\xxx + // 展示用户详细信息-用户名、ID + users.GET("info", validatorFactory.Create(consts.ValidatorPrefix+"UsersInfo")) + // 新增 + // users.POST("create", validatorFactory.Create(consts.ValidatorPrefix+"UsersStore")) // not need + // 更新用户名或密码 + users.POST("username", validatorFactory.Create(consts.ValidatorPrefix+"UsersNameUpdate")) + users.POST("password", validatorFactory.Create(consts.ValidatorPrefix+"UsersPasswordUpdate")) + // 注销用户 + users.POST("delete", validatorFactory.Create(consts.ValidatorPrefix+"UsersDestroy")) + // 退出登录 + users.POST("logout", validatorFactory.Create(consts.ValidatorPrefix+"UsersLogout")) + } + } + + //【需要token】中间件验证的路由 + backend.Use(authorization.CheckTokenAuth()) + { + // 文件操作相关路由组 + file := backend.Group("file/") + { + //创建文件 + file.POST("file_creat", validatorFactory.Create(consts.ValidatorPrefix+"FileCreat")) + //打开文件 + file.GET("file_get", validatorFactory.Create(consts.ValidatorPrefix+"FileGet")) + //文件重命名 + file.POST("file_rename", validatorFactory.Create(consts.ValidatorPrefix+"FileRename")) + //移动文件 + file.POST("file_move", validatorFactory.Create(consts.ValidatorPrefix+"FileMove")) + //保存文件 + file.POST("file_save", validatorFactory.Create(consts.ValidatorPrefix+"FileSave")) + //删除文件 + file.POST("file_delete", validatorFactory.Create(consts.ValidatorPrefix+"FileDelete")) + //创建文件夹 + file.POST("folder_creat", validatorFactory.Create(consts.ValidatorPrefix+"FolderCreat")) + } + } + + } + return router +}