gin框架
1、git框架路由
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default()
// r.get 然后一个路由加一个函数 这个函数必须接受一个gin.Context的指针类型,后续所有的和请求有关系的操作都在这个对象中,
// c.json表示返回一个json格式的响应
r.GET("/home", func(c *gin.Context) { c.JSON(200,gin.H{"name":123}) })
r.Run(":8080") }
2、分组
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default()
//创建一个/v1的组 g :=r.Group("/v1")
//添加了一个home的路由,访问的url为/v1/home g.GET("/home", func(c *gin.Context) { c.JSON(200,gin.H{"name":123}) }) r.Run(":8080") }
3、返回json or html
通过c.json可以直接返回一个json,也可以通过c.html返回一个页面
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default()
//加载模板文件也可以用r.LoadHTMLGlob("./**/*")直接加载一个目录下面的所有模板 r.LoadHTMLFiles("index.html") g :=r.Group("/v1") g.GET("/home", func(c *gin.Context) {
// 返回值200,模板的名字,如果没有需要渲染的内容话直接nil 如果有渲染的话,直接传 c.HTML(200,"index.html",nil) }) r.Run(":8080") }
4、获取参数
可以通过 c.QueryArray() c.Query() c.QueryMap()3个函数获取用户传了的参数,对应的区别就是获取一个参数,获取参数当做数组,获取一map
5、获取from表单数据
通过c.PostForm("key")获取from表单数据
package main import ( "github.com/gin-gonic/gin" "fmt" ) type test struct { Name string `json:"name"` } func main() { r := gin.Default() r.LoadHTMLFiles("index.html") g :=r.Group("/v1") g.GET("/home", func(c *gin.Context) { fmt.Println(c.PostForm("userName")) fmt.Println(c.PostForm("password")) c.HTML(200,"index.html",nil) }) g.POST("/home", func(c *gin.Context) { fmt.Println(c.PostForm("userName")) fmt.Println(c.PostForm("password")) c.HTML(200,"index.html",nil) }) r.Run(":8080") }
6、加载模板文件
通过 r.LoadHTMLGlob() ,r.LoadHTMLFiles()两个方法可以加载模板文件,如果没有加载过的模板文件,是无法直接通过r.html返回的
7、获取url参数
package main import ( "github.com/gin-gonic/gin" "fmt" ) func main() { r := gin.Default() r.GET("/home/:id", func(c *gin.Context) {
//通过Param获取url参数
id :=c.Param("id")
fmt.Println(id)
c.JSON(200, gin.H{"name": 123}) }) r.Run(":8080") }
8、中间件
可以通过r.Use() r.Group()两个方式添加中间件,一个是全局使用中间件,一个是针对组的,也可以直接针对某个路由
9、请求重定向
重定向分为外部重定向和内部重定向
可以通过 c.Redirect(http.StatusMovedPermanently, "http://baidu.com/")外部重定向
可以通过 c.Request.URL.Path = "/test2" ,
r.HandleContext(c)内部的一个路由级别的一个重定向
package main import ( "github.com/gin-gonic/gin" ) func out(c *gin.Context){ c.Redirect(302,"http://www.baidu.com") } func main() { r := gin.Default() //外部重定向 r.GET("/home/",out) //内部重定向 r.GET("/home1",func (c *gin.Context) { c.Request.URL.Path = "/index" r.HandleContext(c) }) r.GET("/index", func(context *gin.Context) { context.JSON(200,"你好") }) r.Run(":8080") }
11、参数绑定
package main import ( "github.com/gin-gonic/gin" ) type preson struct { Id int `form:"id"` Name string `form:"name"` } func out(c *gin.Context){ var p preson c.Bind(&p) c.JSON(200,gin.H{ "id":p.Id,"name":p.Name, }) } func main() { r := gin.Default() //外部重定向 r.GET("/home/",out) //内部重定向 r.Run(":8080") }
Welcome to visit