728x90
반응형

 

 

 

Go언어에서 가장 유명한 프레임워크 Gin 과 Fiber 가 있습니다. 이 중에서 훨씬 더 유명한 Gin을 먼저 알아보겠습니다. Gin의 홈페이지는 https://gin-gonic.com/ 입니다.

 

C:\work\gapi 폴더를 만들고, 그 안에서 go mod init gapi 를 실행합니다.

 

Gin 프레임워크 모듈을 설치해줍니다. go get -u github.com/gin-gonic/gin 을 실행합니다.

 

그리고, main.go 를 작성해봅시다.

package main

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

func main() {
	app := gin.Default()
	app.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"hello": "world",
		})
	})
	app.Run("0.0.0.0:8000")
}

go run main.go 로 프로그램을 실행한다.

웹브라우저에서 http://localhost:8000 을 입력하면 다음과 같이 나오면 정상이다.

 

 

이번에는 포트정보를 .env 파일에 넣고, 불러와서 사용하도록 해보자. 먼저, .env 파일을 생성해서 아래와 같이 추가해준다.

PORT=8000

godotenv 모듈을 설치한다. go get -u github.com/joho/godotenv 를 실행한다.

main.go 를 아래와 같이 수정해줍니다.

package main

import (
	"log"
	"os"

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

func main() {
	// .env 파일 로드
	if err := godotenv.Load(); err != nil {
		log.Fatalf("Error loading .env file: %v", err)
	}

	// 환경 변수에서 포트 가져오기
	port := os.Getenv("PORT")
	if port == "" {
		log.Fatal("PORT is not set in the .env file")
	}

	app := gin.Default()
	app.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"hello": "world",
		})
	})
	app.Run("0.0.0.0:" + port)
}

 

또, go run main.go 를 실행하고, 웹브라우저에서 http://localhost:8000 을 호출해봅니다. hello world 가 잘 나왔으면 성공~!

 

여기에서 핸들러를 여러개 추가해보겠습니다. API가 늘어날수록 핸들러도 늘어나겠지요.

package main

import (
	"log"
	"os"

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

func main() {
	// .env 파일 로드
	if err := godotenv.Load(); err != nil {
		log.Fatalf("Error loading .env file: %v", err)
	}

	// 환경 변수에서 포트 가져오기
	port := os.Getenv("PORT")
	if port == "" {
		log.Fatal("PORT is not set in the .env file")
	}

	app := gin.Default()
	app.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"hello": "world",
		})
	})
	app.GET("/svc1/req1", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"SVC1": "REQ1",
		})
	})
	app.GET("/svc1/req2", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"SVC1": "REQ2",
		})
	})
	app.GET("/svc2/req1", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"SVC2": "REQ1",
		})
	})
	app.GET("/svc2/req2", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"SVC2": "REQ2",
		})
	})
	app.Run("0.0.0.0:" + port)
}

 

그리고, 다시 go run main.go 를 실행하고, 웹브라우저에서 http://localhost:8000/svc1/req1 을 호출해봅니다. 역시 잘 될 것입니다.

그런데, main.go 파일이 너무 복잡해집니다. 다음 글에서는 이 것을 좀 간결하게 만들어보도록 하겠습니다.

 

728x90
반응형

+ Recent posts