Logo

dev-resources.site

for different kinds of informations.

Gin and router example

Published at
7/8/2024
Categories
go
gin
beginners
backend
Author
Quang Hieu (Bee)
Categories
4 categories in total
go
open
gin
open
beginners
open
backend
open
Gin and router example

Image description

  • Install Gin with the following command:
go get -u github.com/gin-gonic/gin
  • 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")
}

  • Then run the main file with the following command:
go run cmd/server/main.go

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

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

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

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
  • 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:

Featured ones: