[go] HTTP 쿠키 다루기

Go 언어를 사용하여 웹 애플리케이션을 개발하고 있다면, HTTP 쿠키를 다루는 방법을 알아두는 것이 중요합니다. HTTP 쿠키는 클라이언트와 서버 간의 상태를 유지하고 정보를 저장하기 위해 사용됩니다. 이번 포스트에서는 Go에서 HTTP 쿠키를 생성, 읽기, 쓰기 및 삭제하는 방법에 대해 알아보겠습니다.

HTTP 쿠키 생성하기

Go에서 HTTP 쿠키를 생성하는 것은 간단합니다. 다음은 쿠키를 생성하는 예제입니다.

package main

import (
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		cookie := http.Cookie{
			Name:  "username",
			Value: "john",
		}
		http.SetCookie(w, &cookie)
	})
}

위의 예제에서는 / 경로로 들어오는 모든 요청에 대해 “username”이라는 이름의 쿠키를 생성하고, 그 값으로 “john”을 설정합니다.

HTTP 쿠키 읽기

클라이언트로부터 HTTP 요청을 받을 때, 서버는 HTTP 쿠키를 읽어올 수 있습니다. 다음은 쿠키를 읽는 예제입니다.

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		cookie, err := r.Cookie("username")
		if err != nil {
			// 쿠키를 찾을 수 없음
			return
		}
		username := cookie.Value
		// username 사용
	})
}

위의 코드에서는 요청으로부터 “username”이라는 이름의 쿠키를 읽어옵니다. 만약 쿠키가 존재하지 않는다면 에러를 처리할 수 있습니다.

HTTP 쿠키 쓰기

서버는 클라이언트에게 HTTP 쿠키를 쓰도록 요청할 수 있습니다. 다음은 쿠키를 쓰는 예제입니다.

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		cookie := http.Cookie{
			Name:  "username",
			Value: "john",
		}
		http.SetCookie(w, &cookie)
	})
}

위의 예제는 클라이언트에게 “username=john”이라는 값을 갖는 쿠키를 쓰도록 요청합니다.

HTTP 쿠키 삭제하기

쿠키를 삭제하기 위해서는 만료일을 현재 시각보다 이전의 값으로 설정하여 쿠키를 무효화시켜야 합니다.

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		cookie := http.Cookie{
			Name:    "username",
			MaxAge:  -1,
			Expires: time.Unix(1, 0),
		}
		http.SetCookie(w, &cookie)
	})
}

위의 코드에서는 “username”이라는 쿠키의 만료일을 현재 시각보다 이전의 값으로 설정하여 쿠키를 삭제하도록 합니다.

마치며

이번 포스트에서는 Go를 사용하여 HTTP 쿠키를 다루는 방법에 대해 알아보았습니다. 쿠키를 생성, 읽기, 쓰기 및 삭제하는 방법을 익힘으로써 웹 애플리케이션 개발에서 상태 유지 및 정보 전달에 유용하게 활용할 수 있을 것입니다. HTTP 쿠키를 다루는 방법을 알아두면 웹 애플리케이션 개발이 더욱 효율적으로 이루어질 것입니다.

참고문헌: