[go] go 언어의 net/http 패키지 소개

Go 언어는 간결하면서도 빠른 웹 응용프로그램 개발을 위한 강력한 언어입니다. net/http 패키지는 Go 언어의 표준 라이브러리 중 하나로, 웹 서버 및 클라이언트를 구성하는 데 필요한 기능을 제공합니다. 이번 포스트에서는 net/http 패키지의 주요 기능과 사용 방법에 대해 알아보겠습니다.

목차

  1. net/http 패키지란?
  2. net/http를 사용한 웹 서버 구성
  3. 핸들러와 라우터 등록
  4. 클라이언트로의 요청 보내기
  5. 마치며

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 패키지에 대한 더 깊은 이해가 필요합니다.

다양한 기능과 사용법에 대해서는 공식 문서를 참고하시기 바랍니다.