[go] net/http 패키지를 사용한 gzip 압축 처리

목차

소개

웹 애플리케이션을 개발할 때, 대용량 파일을 클라이언트로 전송할 때 대역폭을 절약하고자 gzip 압축을 사용할 수 있습니다. 이 글에서는 Go의 net/http 패키지를 사용하여 HTTP 응답 데이터를 gzip으로 압축하는 방법에 대해 설명하겠습니다.

gzip 압축 적용

Go에서 HTTP 핸들러를 작성하여 gzip 압축된 응답을 보내는 예제는 다음과 같습니다.

package main

import (
	"compress/gzip"
	"io"
	"net/http"
	"strings"
)

func handler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Encoding", "gzip")

	gz := gzip.NewWriter(w)
	defer gz.Close()

	content := "This is the content that will be gzip compressed."
	rdr := strings.NewReader(content)
	io.Copy(gz, rdr)
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

위 예제에서는 handler 함수에서 Content-Encoding 헤더를 설정하고 gzip.NewWriter를 사용하여 gzip 스트림을 생성합니다. 그리고 io.Copy 함수를 사용하여 압축된 데이터를 클라이언트로 전송합니다.

요약

이 포스트에서는 Go의 net/http 패키지를 사용하여 HTTP 응답 데이터를 gzip으로 압축하는 방법에 대해 간단히 살펴보았습니다. 이 기술은 클라이언트와 서버 간의 대역폭을 절약하여 웹 애플리케이션의 성능을 향상시킬 수 있습니다.

참고 자료