golang-gin 框架学习 一、 GET POST Method

前言

一直想学一些新的东西,自从接触了 Go 语言,然后学了一些基本语法,但是基本上还是停留在知道这么个语言的阶段,没有深入的了解过.
所以就选了一个文档比较齐全的 Gin 来写我的第一个 webServer 项目.这只是一个 Demo ,写这个日志是为了记录自己的学习历程.激励下自己吧.

Gin API

搭建Web 服务器少不了要写 api 首先从最简单的 GET POST 开始.
首先要初始化一个路由

func main() {
    router := gin.Default()//初始化路由
    router.Run(":8080") // listen and GO on 0.0.0.0:8080
}
GET Method

这个最基本的网络请求在 gin 几行代码就可以搞定

router.GET("/user/:name/:action", func(c *gin.Context) {
        name := c.Param("name")
        action := c.Param("action")
        message := name + " is " + action
        c.String(http.StatusOK, message)
})

client 使用方式如下图 log1

router.GET("/welcome", func(c *gin.Context) {
        firstname := c.DefaultQuery("firstname", "Guest")
        lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")

        c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
    })

client 使用方式如下图 log1

router.POST("/form_post", func(c *gin.Context) {
        message := c.PostForm("message")
        nick := c.DefaultPostForm("nick", "anonymous")

        c.JSON(200, gin.H{
            "status":  "posted",
            "message": message,
            "nick":    nick,
        })
    })
POST Method

一样只需要几行代码

router.POST("/post", func(c *gin.Context) {

    id := c.Query("postid")
    page := c.DefaultQuery("page", "0")
    name := c.PostForm("name")
    message := c.PostForm("message")

    fmt.Printf("id: %s; page: %s; name: %s; message: %s", id, page, name, message)

    c.JSON(200, gin.H{
        "status":  "posted",
        "id": id,
        "page":page,
        "name":name,
        "message":message,

    })
}) 

client 使用方式如下图 log1

type postForm1 struct {
        UserId     string `form:"userid" binding:"required"`
        Page string `form:"page" binding:"required"`
    }

    router.POST("/post1", func(c *gin.Context) {
        var form postForm1
        if c.Bind(&form) == nil{
            c.JSON(200,gin.H{
                "status":200,
                "id":form.UserId,
                "page":form.Page,
            })
        }
        fmt.Printf("id: %s ", form.UserId)
    }) 

client 使用方式如下图 log1