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

     

  • 相关阅读:
    ccf 201604-3 路径解析
    ccf 201609-3 炉石传说
    ccf 201612-3 权限查询
    ccf 201709-3 JSON查询
    ccf 201703-3 Markdown
    POJ 3259 -- Wormholes
    Bellman-Ford 单源最短路径算法
    【oracle】oracle启动和关闭步骤
    【Excel】Excel根据单元格背景色求和
    【Oracle】Oracle时间日期格式
  • 原文地址:https://www.cnblogs.com/Nolover/p/12855707.html
Copyright © 2020-2023  润新知