Go Lang 웹 프레임워크 기초 - Gin 체험하기 (4) 템플릿 연결하기
해당 튜토리얼은 'Building Go Web Applications and Microservices Using Gin'의 내용을 번역하며 개인적으로 정리한 것입니다.
이번 시간에는 기본 튜토리얼 템플릿의 연결을 완료하고 검증해보는 과정의 첫 단계를 직접 만들어보고자 합니다.
1. 설치 완성하고 검증하기
템플릿을 모두 만드셨다면 이제 어플리케이션 도입부에 해당하는 파일을 만들 차례입니다. 인덱스 템플릿을 사용할 수 있도록 구성된 가장 단순한 웹 어플리케이션이 포함된 main.go를 만들어 보도록 하겠습니다. 우리는 Gin을 사용해서 네 단계로 이 과정을 진행할 수 있습니다.
1-1. 라우터 만들기
Gin에서 라우터를 만드는 기본적인 방법은 다음과 같습니다.
router := gin.Default()
이를 통해 어플리케이션의 빌드를 정의하는데 사용될 라우터를 만들 수 있습니다.
1-2. 템플릿 불러오기
라우터를 제작했다면, 다음의 방법으로 모든 템플릿을 불러올 수 있습니다
router.LoadHTMLGlob("templates/*")
이를 통해 Templates 폴더의 모든 템플릿 파일들이 불러와지고, 한 번 로딩되면 매번 요청 때마다 다시 읽어올 필요가 없고, 이러한 점이 Gin 웹 어플리케이션을 매우 빠르게 만들어줍니다.
1-3. 라우터 핸들러 정의하기
Gin의 가장 중요한 핵심은 어떻게 어플리케이션의 다양한 경로들을 나누고, 핸들러를 각 경로에 정의하는가에 있습니다. 이번에는 인덱스 페이지에 대한 라우터와 인라인 라우터 핸들러를 만들 것입니다.
router.GET("/", func(c *gin.Context) {
// ------ Context의 HTML 메소드를 호출하여 템플릿을 렌더링합니다. ----- //
c.HTML(
// ----- HTTP 상태를 200(OK)에 세팅합니다 ------ //
http.StatusOK,
// ------ index.html 템플릿을 사용합니다 ------- //
"index.html",
// ----- 페이지에서 사용하는 데이터 전달 ------- //
gin.H{
"title": "Home Page",
},
)
})
router.GET 메소드는 GET 요청에 대한 라우터 핸들러를 정의하는데 사용됩니다.
라우터 핸들러에는 gin.Context 에 대한 포인터를 매개변수로 가지고 있습니다. 이 컨텍스트는 핸들러가 요청을 처리하는 데 필요할 수 있는 요청에 대한 모든 정보를 포함합니다. 예를 들면, Header, 쿠키와 같은 정보들을 말합니다.
컨텍스트에는 HTML, TEXT, JSON, XML 형식으로 응답을 렌더링하는 메소드도 있습니다. 이 경우 HTML 템플릿(index.html)을 렌더링하기 위해 context.html 메소드를 사용합니다. 이 메소드에 대한 호출에는 title값이 Home Page ("title": "Home Page" 부분)로 설정된 추가 데이터가 포함됩니다. HTML 템플릿에서 사용할 수 있는 값입니다.
1-4. 어플리케이션 시작하기
어플리케이션을 시작하기 위해 라우터의 Run 메소드를 사용할 수 있습니다.
router.Run()
이를 통해 localhost에서 어플리케이션이 시작되고, 기본값으로 8080 포트에서 구동됩니다.
완성된 main.go 소스코드는 다음과 같습니다.
▶ main.go
// main.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
var router *gin.Engine
func main() {
// ----- Gin에서 기본 라우터 생성 ----- //
router = gin.Default()
// ------ 모든 템플릿 파일 로드 ------- //
router.LoadHTMLGlob("templates/*")
router.GET("/", func(c *gin.Context) {
// ------ Context의 HTML 메소드를 호출하여 템플릿을 렌더링합니다. ----- //
c.HTML(
// ----- HTTP 상태를 200(OK)에 세팅합니다 ------ //
http.StatusOK,
// ------ index.html 템플릿을 사용합니다 ------- //
"index.html",
// ----- 페이지에서 사용하는 데이터 전달 ------- //
gin.H{
"title": "Home Page",
},
)
})
// ------ 어플리케이션 서버 구동 ------//
router.Run()
}
Mac OS의 경우 터미널, Windows의 경우 CMD 창에서 해당 프로젝트를 생성한 디렉토리로 이동한 후에 다음의 명령어를 실행시켜봅니다.
go build -o app
어플리케이션이 빌드되고 다음과 같이 실행할 수 있는 실행 파일 이름이 지정된 어플리케이션이 생성됩니다.
./app
여기까지 모든 진행사항을 충실히 작업하시면서 따라오셨다면, http://localhost:8080에서 우리가 제작한 어플리케이션에 접속할 수 있습니다. 실행시 다음과 같이 실행이 됩니다.
현 시점에서의 어플리케이션 디렉토리 구조는 다음과 같이 구성이 되어있으실 겁니다
다음 시간에는 라우터를 초기화하고 기사(Article)을 작성할 수 있는 템플릿을 생성하고 테스트를 하는 과정을 진행해보도록 하겠습니다. 짧은 내용이지만 직접 제작해보시고 구동해보시면서 Gin을 체험해보세요!
'IT > Develop' 카테고리의 다른 글
Go Lang 웹 프레임워크 기초 - Gin 체험하기 (6) 메인 페이지 기사 리스트 구조만들기 (0) | 2021.08.29 |
---|---|
Go Lang 웹 프레임워크 기초 - Gin 체험하기 (5) 라우터 초기화, 기사 목록 모델 테스트 (0) | 2021.08.21 |
Go Lang 웹 프레임워크 기초 - Gin 체험하기 (3) 기본 템플릿 작성 (0) | 2021.08.20 |
Go Lang 웹 프레임워크 기초 - Gin 체험하기 (2) 튜토리얼 개요 (0) | 2021.08.20 |
Go Lang 웹 프레임워크 기초 - Gin 체험하기 (1) Web Framework 기초 (0) | 2021.08.16 |