[go] net/http 패키지를 사용한 요청 리다이렉트 처리

Go 언어에서 HTTP 요청을 보내고 응답을 받을 때, 때로는 서버가 요청을 리다이렉트하고 새로운 URL로 이동하는 경우가 있습니다. 이때, 프로그램에서 이 리다이렉트를 처리하는 방법에 대해 알아봅시다.

net/http 패키지

Go에서 HTTP 요청을 보내기 위해서는 표준 라이브러리인 net/http 패키지를 사용합니다.

// 요청 생성
req, err := http.NewRequest("GET", "http://example.com", nil)
if err != nil {
    log.Fatal(err)
}

// HTTP 클라이언트 생성
client := &http.Client{}

// 요청 전송
resp, err := client.Do(req)
if err != nil {
    log.Fatal(err)
}

defer resp.Body.Close()

// 응답 처리
// ...

리다이렉트 처리

기본적으로 net/http 패키지의 Client는 자동으로 리다이렉트를 처리합니다. 하지만 경우에 따라 리다이렉트를 커스터마이징 해야 할 수도 있습니다.

리다이렉트를 커스터마이징하려면 Client 구조체를 직접 생성하고 CheckRedirect 필드에 적절한 함수를 할당해야 합니다.

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse // 리다이렉트를 중단하고 마지막 응답을 사용
    },
}

위의 코드에서 CheckRedirect 필드에 할당된 함수는 리다이렉트를 어떻게 처리할지를 정의합니다. http.ErrUseLastResponse를 반환하면 리다이렉트를 중단하고 마지막 응답을 사용하도록 설정됩니다.

이제,net/http 패키지를 사용하여 HTTP 요청을 보내는 과정과 리다이렉트를 처리하는 방법에 대해 이해했습니다. 적절한 상황에 따라 적용하여 안정적이고 유연한 HTTP 요청 처리를 구현할 수 있습니다.

참고문헌: