Gin and router example

hieunguyendev

Quang Hieu (Bee)

Posted on July 8, 2024

Gin and router example

Image description

  • Install Gin with the following command:
go get -u github.com/gin-gonic/gin
Enter fullscreen mode Exit fullscreen mode
  • After installation, we proceed to code in the “main.go” file with a simple function as follows:
package main

import (
  "net/http"

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

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
      "message": "pong",
    })
  })
  r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

Enter fullscreen mode Exit fullscreen mode
  • Then run the main file with the following command:
go run cmd/server/main.go
Enter fullscreen mode Exit fullscreen mode

Note: Depending on your folder organization, the command to run the main.go file may differ from mine. I have introduced how to organize the structure in the article: here

  • After running the above command, we will receive the following result:

Image description

  • Great, let's try calling the ping endpoint with the following command:
curl http://localhost:8080/ping
Enter fullscreen mode Exit fullscreen mode
  • The result received will be:

Image description

  • Now, let's try to split the simple router:
package main

import (
    "net/http"

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

func main() {
    r := gin.Default()

    v1 := r.Group("/v1")
    {
        v1.GET("/ping", Pong) // curl http://localhost:8080/v1/ping
    }
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

func Pong(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
        "message": "pong",
    })
}

Enter fullscreen mode Exit fullscreen mode

Note: After changing the code as above, remember to run the command: "go run cmd/server/main.go" to apply the new code.

  • Next, let's try running the new router with the following command:
curl http://localhost:8080/v1/ping
Enter fullscreen mode Exit fullscreen mode
  • The result received will be:

Image description

  • Now, let's try to get the parameter from Param:
package main

import (
    "net/http"

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

func main() {
    r := gin.Default()

    v1 := r.Group("/v1")
    {
        v1.GET("/ping/:name", Pong) // curl http://localhost:8080/v1/ping
    }
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

func Pong(c *gin.Context) {
    name := c.Param("name")
    c.JSON(http.StatusOK, gin.H{
        "message": "pong:::: " + name,
    })
}

Enter fullscreen mode Exit fullscreen mode

Note: After changing the code as above, remember to run the command: "go run cmd/server/main.go" to apply the new code.

  • Try to get the param with the following command:
curl http://localhost:8080/v1/ping/hieunguyen
Enter fullscreen mode Exit fullscreen mode
  • The result received will be:

Image description

  • Next, we will try to get the parameter from the Query:
package main

import (
    "net/http"

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

func main() {
    r := gin.Default()

    v1 := r.Group("/v1")
    {
        v1.GET("/ping", Pong) // curl http://localhost:8080/v1/ping
    }
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

func Pong(c *gin.Context) {
    id := c.Query("id")
    c.JSON(http.StatusOK, gin.H{
        "message": "pong:::: " + id,
    })
}

Enter fullscreen mode Exit fullscreen mode

Note: After changing the code as above, remember to run the command: "go run cmd/server/main.go" to apply the new code.

  • Try to get the query with the following command:
curl http://localhost:8080/v1/ping\?id=12345
Enter fullscreen mode Exit fullscreen mode
  • The result received will be:

Image description

You can directly refer to Gin on GitHub with the following link:here

Give me a reaction and a follow for motivation 😘

If you found this article useful and interesting, please share it with your friends and family. I hope you found it helpful. Thanks for reading 🙏

Let's get connected! You can find me on:

💖 💪 🙅 🚩
hieunguyendev
Quang Hieu (Bee)

Posted on July 8, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Gin and router example
go Gin and router example

July 8, 2024