[Golang] gin 웹프레임워크 기초 및 예제실행

반응형

Golang의 웹 프레임워크는 gin, echo, beego 등 여러 가지가 존재한다. 하지만 gin를 주로 많이 사용하는 것 같다.

아래 이미지는 젯브레인에서 2020년에 실시한 개발자 에코시스템의 현황 중 Go 프로그래밍에 대한 내용의 일부이다.

Go 웹 프레임워크로 gin를 많이 사용하는 것을 알 수 있다.


예제

예제를 실행하기 앞서서 Go Modules프로젝트를 생성하자.

젯브레인 블로그에서 자세히 확인할 수 있다.

 

gin 패키지 추가

/ping를 호출하면 pong이라는 결과를 받는 간단한 예제이다.

package main

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

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

 

예제 코드를 추가하고 Sync packages... 버튼을 클릭해서  gin 패키지를 추가하자.

 

 

패키지도 받았으면 예제를 실행해보자.

실행하면 아래와 같은 결과 확인할 수 있다.

 

 

 

:포트번호에 원하는 포트번호를 입력해주면 된다.

r.Run(":포트번호")
//  8888포트를 사용하고 싶으면 다음과 같이 설정해주면 된다.
//  r.Run(":8888") 

 

 

 

 

파라미터

path에 파라미터를 추가하여 사용할 수 있다.

/user/:name 은 :name에 해당하는 경로를 파라미터로 받는다.

호출하게 되면 name은 gin를 전달받게 된다.

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

 

하위 경로를 묶어서 파라미터로 설정하려면 아래처럼  /user/name/A/B/C 로 호출을 하면 action 은 A/B/C를 전달받는다.

router.GET("/user/:name/*action", func(c *gin.Context) {
	name := c.Param("name")
	action := c.Param("action")
	message := name + " is " + action
	c.String(http.StatusOK, message)
})

 

 

 

 

 

 

쿼리

쿼리는 다음과 같이 처리하면 된다.

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

DefaultQuery 함수를 사용하게 되면 함수 이름과 같이 두 번째 오는 파라미터에 기본값을 설정할 수 있다. 아래 예제는 firstname파라미터 없이 호출하면 Guest가 기본값으로 설정된다.

/welcome?firstname=go&lastname=gin로 호출하면 Hello go gin이라는 결과를 얻을 수 있다.