Go 언어 template 서버 만들어 보기

오늘은 Go 언어 기본 패키지에 포함되있는 html/template을 이용하여 웹 서버를 만드는 실습을 해보려 합니다.

package main

import (
	"flag"
	"html/template"
	"net/http"
)

커맨드라인 플래그를 파싱해주는 flag와 템플릿을 만들어주는 html/template 패키지를 가져옵니다.

그리고 웹 서버에 만들 net/http 패키지도 가져옵니다.

var templateStr = `
<html>
<head>
<title>hello world</title>
</head>
<body>
<p>hello world!</p>
</body>
</html>
`

간단한 html 코드를 문자열로 저장합니다.

var address = flag.String("addr", ":8080", "http service address")
var templateParser = template.Must(template.New("").Parse(templateStr))

addr라는 이름의 플래그에 :8080를 기본으로 달아줍니다.

그리고 위 html 코드를 파싱해줍니다.

func main() {
	flag.Parse()
	http.Handle("/", http.HandlerFunc(func (w http.ResponseWriter, req *http.Request)  {
		templateParser.Execute(w, req)
	}))

이제 메인 함수에서는 위에서 선언한 플래그를 실핼하기 위해 Parse() 명령을 수행합니다.

그리고 http 핸들러를 지정해줍니다. 루트 디렉토리에 접속하면 미리 만들어둔 html 코드를 파싱한 템플릿을 웹 서버에 뿌려주는 익명 함수가 HandlerFunc에 의해 실행되게 됩니다.

	http.ListenAndServe(*address, nil)
}

아까 만든 플래그로 포트를 지정하여 웹 서버를 시작하고, 고투린에 작업을 맡깁니다.

Written on October 24, 2018