# web **Repository Path**: youkelike/web ## Basic Information - **Project Name**: web - **Description**: web 框架 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-20 - **Last Updated**: 2024-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## web 一个有完整功能的 web 框架 ## 特性 支持普通路由、参数路由、通配符路由、正则路由 AOP 支持全局中间件和路由中间件 支持模板渲染插件 支持 session 插件 支持优雅关停 ## 框架的三大抽象 服务器 Server 上下文 Context 路由 router ## Server 抽象的三大功能: 连接 http 包和框架(通过内嵌 http.Handler) 管理服务生命周期(启动、优雅关停) 管理路由 ## 路由规则 不能重复注册路由 支持完整匹配、路径参数、* 号通配符、正则匹配,而且在注册路由时,同一个路径节点上路径参数、* 号通配符、正则匹配只能有其中一种 path 必须以 / 开始,中间不能有连续的 /,结尾不能有 / 不能在同一个位置注册不同命名的参数路由,比如 /user/:id 和 /user/:name 不能在同一个位置注册不同规则的正则路由,比如 /user/:(id) 和 /user/:(name) 不能在同一个位置同时注册参数路由和通配符路由,比如 /user/:id 和 /user/* 同名路径参数,匹配的时候会覆盖,比如 /user/:id/a/:id ## Context 处理输入输出支持 反序列化、重复读取 body 表单输入处理 查询参数处理 路径参数处理 读取 Header、cookie、session 序列化输出 渲染页面 处理状态码 设置 cookie 设置 header 错误页面 ## 使用示例 ```go s := web.NewHTTPServer() mockHandler1 := func(c *web.Context) { fmt.Println("mockHandler1") } mockHandler2 := func(c *web.Context) { fmt.Println("mockHandler2") } s.Use(http.MethodGet, "/", mockHandler1) s.Get("/login", mockHandler1) s.Post("/login", mockHandler2) s.Start(":8080") ```