Go 언어는 간결하면서도 빠른 웹 응용프로그램 개발을 위한 강력한 언어입니다. net/http 패키지는 Go 언어의 표준 라이브러리 중 하나로, 웹 서버 및 클라이언트를 구성하는 데 필요한 기능을 제공합니다. 이번 포스트에서는 net/http 패키지의 주요 기능과 사용 방법에 대해 알아보겠습니다.
목차
net/http 패키지란?
net/http 패키지는 Go 언어에서 HTTP 프로토콜을 사용하여 웹 서버 및 클라이언트를 구현하는 데 사용됩니다. 이 패키지는 기본적인 HTTP 기능을 제공하며, 많은 웹 응용프로그램을 구축하기 위한 다양한 기능들을 제공합니다.
net/http를 사용한 웹 서버 구성
간단한 예제로, “Hello, World!”를 반환하는 웹 서버를 구성해보겠습니다.
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
위의 예제에서, http.HandleFunc
을 사용하여 “/” 경로에 요청이 오면 handler
함수를 호출하도록 합니다. http.ListenAndServe
함수를 이용하여 서버를 시작하고 8080번 포트에서 요청을 대기합니다.
핸들러와 라우터 등록
net/http 패키지를 사용하면 다양한 핸들러를 등록하여 경로별로 요청을 처리할 수 있습니다. 예를 들어, “/about” 경로로 들어오는 요청에 대해 다른 응답을 보내도록 다른 핸들러를 등록할 수 있습니다.
func aboutHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "About Page")
}
func main() {
http.HandleFunc("/", handler)
http.HandleFunc("/about", aboutHandler)
http.ListenAndServe(":8080", nil)
}
위의 예제에서, /about
경로에 대한 핸들러를 aboutHandler
로 등록하였습니다.
클라이언트로의 요청 보내기
net/http 패키지는 클라이언트로 HTTP 요청을 보내는 기능도 제공합니다. 다음은 GET 요청을 보내고 응답을 출력하는 간단한 예제입니다.
func main() {
resp, err := http.Get("http://example.com")
if err != nil {
// 오류 처리
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// 오류 처리
}
fmt.Println(string(body))
}
마치며
net/http 패키지는 Go 언어의 강력한 도구로, 웹 서버 및 클라이언트를 구축하기 위한 다양한 기능을 제공합니다. 이번 포스트를 통해 net/http 패키지의 간단한 사용 방법에 대해 알아보았습니다. Go 언어를 사용하여 강력하고 효율적인 웹 어플리케이션을 개발하기 위해서는 net/http 패키지에 대한 더 깊은 이해가 필요합니다.
다양한 기능과 사용법에 대해서는 공식 문서를 참고하시기 바랍니다.