Gin and router example
Tags: go, gin, beginners, backend
Published: 2024-07-08 17:34:09


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdpsnutre0wjmfyaxbdo.png)

- 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](https://dev.to/hieunguyendev/backend-project-structure-go-1ph8)

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


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r8kl1i25golok7v1bz6c.png)

- Great, let's try calling the ping endpoint with the following command:

```
curl http://localhost:8080/ping
```

- The result received will be:



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yrgm9lja4fq2h4b1urmz.png)


- 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/biizdoc9s8txvrni01hs.png)

- 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpwqqr2fyixxrd30951x.png)

- 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mloz5pap0rg1nr15gce3.png)

You can directly refer to Gin on GitHub with the following link:[here](https://github.com/gin-gonic/gin)


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

- Medium: [Quang Hieu (Bee) -- Medium](https://quanghieudev.medium.com/)
- Dev: [Quang Hieu (Bee) -- Dev](https://dev.to/hieunguyendev)
- Linkedin: [Quang Hieu (Bee) -- Linkedin](https://www.linkedin.com/in/hiếu-nguyễn-1a38132bb/)
- Buy Me a Coffee: [Quang Hieu (Bee) -- buymeacoffee](https://buymeacoffee.com/quanghieudev)