[go] Go 언어를 이용한 웹 라우팅 구현하기

Go 언어를 사용하여 웹 애플리케이션을 개발할 때, 라우팅은 매우 중요한 부분입니다. 라우팅은 클라이언트의 요청을 적절한 핸들러 함수로 연결하는 프로세스를 말합니다. 이 블로그에서는 Go 언어를 이용하여 간단한 웹 애플리케이션을 개발하고, 그 안에서 라우팅을 어떻게 구현하는지 알아보겠습니다.

1. Go 언어로 웹 애플리케이션 개발하기

우선 Go 언어로 웹 애플리케이션을 개발하기 위해서는 net/http 패키지를 사용해야 합니다. 다음은 간단한 웹 서버를 생성하는 Go 코드의 예시입니다.

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Welcome to our website!")
	})

	http.ListenAndServe(":8080", nil)
}

위 코드에서 http.HandleFunc 함수를 사용하여 / 경로로 들어오는 요청을 처리할 핸들러 함수를 등록하고, http.ListenAndServe 함수를 사용하여 웹 서버를 시작합니다.

2. 라우팅 구현하기

간단한 라우팅을 구현하기 위해서는 http.HandleFunc 함수를 사용합니다. 다음은 /about 경로에 대한 핸들러 함수를 등록하는 예시입니다.

http.HandleFunc("/about", func(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "This is the about page")
})

위와 같이 경로와 핸들러 함수를 http.HandleFunc 함수를 사용하여 등록할 수 있습니다. 이제 /about 경로로 들어오는 요청을 위의 핸들러 함수가 처리하게 됩니다.

3. 매개변수를 이용한 동적 라우팅

가끔은 경로에 매개변수를 사용하여 동적으로 요청을 처리해야 할 때가 있습니다. 이때는 Gorilla Mux와 같은 외부 라이브러리를 사용하면 편리합니다. 다음은 Gorilla Mux를 사용하여 동적 라우팅을 구현하는 예시입니다.

package main

import (
	"fmt"
	"net/http"

	"github.com/gorilla/mux"
)

func main() {
	r := mux.NewRouter()

	r.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
		vars := mux.Vars(r)
		fmt.Fprintf(w, "User ID: %v", vars["id"])
	})

	http.ListenAndServe(":8080", r)
}

위 코드에서 Gorilla Mux 패키지를 사용하여 /users/{id} 경로에 대한 핸들러 함수를 등록하고, 해당 경로로 들어오는 요청에서 id 매개변수 값을 추출하여 사용할 수 있습니다.

이렇게 Go 언어로 웹 애플리케이션을 개발하고, 라우팅을 구현하는 방법에 대해 알아보았습니다. Go로 웹 애플리케이션을 개발하고자 한다면, 이러한 기본적인 개념을 숙지하는 것이 중요합니다.

참고 자료