Golang JSON HTML 템플릿 렌더링 Render 라이브러리 알아보기

오늘은 Golang으로 JSON과 HTML 템플릿을 렌더링하는 Render 라이브러리를 알아보려 합니다.

Render 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

sudo apt-get install golang-go

맥에서 Golang의 버전을 올리려면 brew를 이용합니다.

brew upgrade go

우분투에서도 Golang의 버전을 올리려면 backports 저장소를 등록하고 apt를 이용합니다.

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go

go get으로 Render 패키지를 설치합니다.

go get gopkg.in/unrolled/render.v1

홈의 go 폴더에 Render 소스코드와 패키지 파일이 생성됩니다.

예제

package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

import (
	"net/http"

	"gopkg.in/unrolled/render.v1"
)

net과 render를 가져옵니다.

func main() {
	renderObject := render.New()
	serveMux := http.NewServeMux()

Render와 ServeMux 객체를 만듭니다.

	serveMux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
		w.Write([]byte("hello, world!"))
	})

바이트를 출력하는 핸들러 함수를 등록합니다.

	serveMux.HandleFunc("/data", func(w http.ResponseWriter, req *http.Request) {
		renderObject.Data(w, http.StatusOK, []byte("hello, world!"))
	})

바이너리 데이터를 출력하는 핸들러 함수를 등록합니다.

	serveMux.HandleFunc("/text", func(w http.ResponseWriter, req *http.Request) {
		renderObject.Text(w, http.StatusOK, "hello, text!")
	})

텍스트를 출력하는 핸들러 함수를 등록합니다.

	serveMux.HandleFunc("/json", func(w http.ResponseWriter, req *http.Request) {
		renderObject.JSON(w, http.StatusOK, map[string]string{"hello": "json"})
	})

JSON을 출력하는 핸들러 함수를 등록합니다.

	serveMux.HandleFunc("/jsonp", func(w http.ResponseWriter, req *http.Request) {
		renderObject.JSONP(w, http.StatusOK, "callback", map[string]string{"hello": "jsonp"})
	})

JSON을 출력하는 핸들러 함수를 등록합니다.

	serveMux.HandleFunc("/html", func(w http.ResponseWriter, req *http.Request) {
		renderObject.HTML(w, http.StatusOK, "test", "text")
	})

콜백을 포함한 JSON을 출력하는 핸들러 함수를 등록합니다.

	http.ListenAndServe("127.0.0.1:8080", serveMux)
}

지정한 주소와 포트로 서버를 구동합니다.

Written on December 9, 2019