随笔分类 - gin
golang框架gin
摘要:goroutine机制可以方便地实现异步处理 另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本 // 异步 func longAsync(context *gin.Context) { copyContext := context.Copy() go func() {
阅读全文
摘要:重定向redirect func someRedirect(context *gin.Context) { context.Redirect(http.StatusMovedPermanently, "https://www.mayanan.cn") }
阅读全文
摘要:各种数据格式的响应 json、结构体、XML、YAML类似于java的properties、ProtoBuf 点击查看代码 // json响应 func someJson(context *gin.Context) { context.JSON(http.StatusOK, gin.H{"statu
阅读全文
摘要:Json数据解析与绑定 客户端传参,后端接收并解析到结构体 func Login(context *gin.Context) { // 声明接收的变量 var login LoginJson // 将request的body中的数据,自动按照json格式解析到结构体 // 等价于:context.S
阅读全文
摘要:基本的路由注册 下面最基础的gin路由注册方式,适用于路由条目比较少的简单项目或者项目demo。 package main import ( "net/http" "github.com/gin-gonic/gin" ) func helloHandler(c *gin.Context) { c.J
阅读全文
摘要:基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 package main import ( "fmt" "github.com/juliensch
阅读全文
摘要:介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错 借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于
阅读全文
摘要:核心知识点 json配置文件解析成结构体 将路由对应的接口抽离到单独的文件中,main函数中直接注册路由即可 项目目录图 项目代码 app.json代码 { "app_name": "cloudRestaurant", "app_mode": "debug", "app_host": "127.0.
阅读全文
摘要:package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "log" ) func main() { // 链接数据库 //dsn := "username:password@protocal(host
阅读全文
摘要:概念 一个完整的系统可能包括鉴权认证、权限管理、安全检查、日志记录等多维度的系统支持。 中间件位与服务器和实际业务处理程序之间,其含义就相当于在请求和具体的业务处理逻辑之间增加某些操作,这种以额外增加的方式不会影响编码的效率,也不会侵入到框架中。 中间件的位置和角色示意图 自定义一个中间件 gin中
阅读全文
摘要:1. gin框架中可以使用路由组来实现对路由的分类 package main import "github.com/gin-gonic/gin" func main() { router := gin.Default() userGroup := router.Group("/user") user
阅读全文
摘要:返回四种格式的数据:1. []byte、string 2. json格式 3. html模板渲染 4. 静态资源设置 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.D
阅读全文
摘要:package main import ( "fmt" "github.com/gin-gonic/gin" ) // gin框架提供给开发者表单实体绑定的功能,可以将表单数据与结构体绑定 type userRegister struct { UserName string `form:"usern
阅读全文
摘要:1. 方法一: 通用的处理方法 Handle package main import ( "fmt" "github.com/gin-gonic/gin" "log" ) func main() { router := gin.Default() router.Handle("GET","/hell
阅读全文
摘要:package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { // 静态文件服务 router := gin.Default() router.Static("/assets", "./assets") //
阅读全文
摘要:package main import ( "github.com/gin-gonic/gin" ) func main() { // HTTP重定向很容易,内部、外部重定向均支持 router := gin.Default() /* GET重定向 router.GET("/", func(cont
阅读全文
摘要:运行服务的返回类型为 :http.Handler 。gin.New(),gin.Default() 返回的就是此类型。使用&http.Server{....} 设置服务参数使用g.Go(func () error{ return server.ListenAndServe()}) 开启一个服务 pa
阅读全文
摘要:package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() // 后台路由 admin := router.Group("/admin") admin.GET("/t1", func
阅读全文
摘要:package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() // 路由参数1,将匹配/user/mayanan和/user/,但是不会匹配/user //router.G
阅读全文
摘要:package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/cookie", func(context *gin.Context) { // 获
阅读全文