[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 요청 처리를 구현할 수 있습니다.
참고문헌: