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")
}

 

原文地址:https://www.cnblogs.com/Nolover/p/12855707.html