<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 特性 1. **快速**:路由不使用反射,基于Radix樹,內存占用少。 2. **中間件**:HTTP請求,可先經過一系列中間件處理,例如:Logger,Authorization,GZIP等。這個特性和 NodeJs 的`Koa`框架很像。中間件機制也極大地提高了框架的可擴展性。 3. **異常處理**:服務始終可用,不會宕機。Gin 可以捕獲 panic,并恢復。而且有極為便利的機制處理HTTP請求過程中發生的錯誤。 4. **JSON**:Gin可以解析并驗證請求的JSON。這個特性對`Restful API`的開發尤其有用。 5. **路由分組**:例如將需要授權和不需要授權的API分組,不同版本的API分組。而且分組可嵌套,且性能不受影響。 6. **渲染內置**:原生支持JSON,XML和HTML的渲染 ## 安裝 ```` go get -u -v github.com/gin-gonic/gin ```` ## 使用 ``` package main import "github.com/gin-gonic/gin" func main() { //生成一個實例 r := gin.Default() //定義一個路由,當用戶訪問/test時,返回顯示"I'm ok" r.GET("/test", func(c *gin.Context) { c.String(200, "I'm ok") }) //運行,且指定在1111端口運行 r.Run(":1111") } ``` ## 路由`Route` ### 請求方法 `GET`、`POST`、`DELETE`、`PUT`、`PATCH`、`OPTIONS`、`ANY`(`ANY`可以匹配任意請求方法) ### 解析路徑參數(http://localhost:1111/hello/tianyuan) ``` r.GET("/hello/:name", func(c *gin.Context) { name := c.Param("name") c.String(http.StatusOK, "Hello %s", name) }) ``` `:name`必須傳入`name`參數 `*sex`可選傳入`sex`參數 ### 解析query參數(http://localhost:1111/hello?name=tianyuan&sex=男) ``` r.GET("/hello", func(c *gin.Context) { name := c.Query("name") //sex為可選參數,默認男 sex := c.DefaultQuery("sex", "男") c.String(http.StatusOK, "%s的性別是%s", name, sex) }) ``` ### 解析POST參數 ``` r.POST("/form", func(c *gin.Context) { username := c.PostForm("username") password := c.DefaultPostForm("password", "123456") c.JSON(http.StatusOK, gin.H{ "username": username, "password": password, }) }) ``` ### Map參數 ``` ids := c.QueryMap("ids") names := c.PostFormMap("names") ``` ### 重定向 ``` func main() { //生成一個實例 r := gin.Default() r.GET("/test", func(c *gin.Context) { //方案1 c.Redirect(http.StatusMovedPermanently, "/index") //方案2 c.Request.URL.Path = "/index" r.HandleContext(c) }) r.GET("/index", func(c *gin.Context) { c.String(http.StatusOK, "index") }) //運行,且指定在1111端口運行 r.Run(":1111") } ``` ### 路由分組 ``` func main() { //生成一個實例 r := gin.Default() defaultHandler := func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "path": c.FullPath(), }) } v1 := r.Group("/v1") { v1.GET("posts", defaultHandler) v1.GET("series", defaultHandler) } v2 := r.Group("/v2") { v2.GET("/posts", defaultHandler) v2.GET("/series", defaultHandler) } //運行,且指定在1111端口運行 r.Run(":1111") } ``` ### 上傳文件 ``` //單文件 file, _ := c.FormFile("file") // 多文件 form, _ := c.MultipartForm() files := form.File["upload[]"] for _, file := range files { log.Println(file.Filename) // c.SaveUploadedFile(file, dst) } ``` ### HTML模板 ### 中間件 ``` r.Use(gin.Logger()) ``` ### 熱加載調試`Hot Reload` 加載庫 ``` go get -v -u github.com/pilu/fresh ``` 運行`fresh`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看