Golang的HTTP路由gin

leegoway · · 1707 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


Golang已经是一个很丰富的语言了,包含很多的工具和库。因为作者经常做Http开发工作,所以先来探索gin库。

熟悉使用

第一步:安装

 $ go get github.com/gin-gonic/gin

第二步:引用

import "github.com/gin-gonic/gin"

第三步:代码

   func main() {
    // Disable Console Color
    // gin.DisableConsoleColor()

    // Creates a gin router with default middleware:
    // logger and recovery (crash-free) middleware
    router := gin.Default()

    router.GET("/someGet", getting)
    router.POST("/somePost", posting)
    router.PUT("/somePut", putting)
    router.DELETE("/someDelete", deleting)
    router.PATCH("/somePatch", patching)
    router.HEAD("/someHead", head)
    router.OPTIONS("/someOptions", options)

    // By default it serves on :8080 unless a
    // PORT environment variable was defined.
    router.Run()
    // router.Run(":3000") for a hard coded port
}

使用说明

参数的利用

假设c *.gin.Context,那么:
1、获取路由参数是c.Param("name"),例如

r.GET("/user/:name", func(c *gin.Context) {
    name := c.Param("name")
    c.String(http.StatusOK, "Hello %s", name)
})

2、获取http的querystring,使用c.Query("name"),例如:

r.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)
})

3、获取post过来的参数,使用c.PostForm("name")

接口版本分组

1、版本是更新换代的一个保证

    router := gin.Default()
    // Simple group: v1
    v1 := router.Group("/v1")
    {
        v1.POST("/login", loginEndpoint)
        v1.POST("/submit", submitEndpoint)
        v1.POST("/read", readEndpoint)
    }
    // Simple group: v2
    v2 := router.Group("/v2")
    {
        v2.POST("/login", loginEndpoint)
        v2.POST("/submit", submitEndpoint)
        v2.POST("/read", readEndpoint)
    }

中间件

无论前后端开发基本都涉及中间件middleware。不过路由基本也是一个middleware,作者把其他middleware都作为路由的一部分了。
r := gin.New()是不包含middleware的,而gin.Default是包含logger和recovery中间件的。

待续。。。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:leegoway

查看原文:Golang的HTTP路由gin

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1707 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传