> 백엔드 개발 > Golang > Go에서 리디렉션 없이 URL을 쿼리하는 방법은 무엇입니까?

Go에서 리디렉션 없이 URL을 쿼리하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-07 14:10:14
원래의
688명이 탐색했습니다.

How to Query URLs Without Redirects in Go?

Go에서 리디렉션 없이 URL 쿼리

리디렉션 스크립트를 테스트할 때 리디렉션을 트리거하지 않고 URL을 쿼리해야 할 수 있습니다. 이는 리디렉션 URL이나 오류를 기록하는 데 특히 유용합니다. Go에서는 이를 달성하기 위한 두 가지 접근 방식이 있습니다.

기본 전송 사용

첫 번째 방법은 http.DefaultTransport 개체를 사용하는 것입니다. 요청 처리 프로세스. RoundTrip 기능을 활용하면 리디렉션을 따르지 않고 HTTP 요청을 실행할 수 있습니다.

req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil)
// ...
resp, err := http.DefaultTransport.RoundTrip(req)
로그인 후 복사

CheckRedirect 필드 사용

또는 두 번째 방법은 다음을 활용합니다. http.Client의 CheckRedirect 필드. 이 필드를 func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }로 설정하면 클라이언트를 통해 실행되는 후속 요청에 대한 리디렉션 처리가 효과적으로 비활성화됩니다.

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
resp, err := client.Get("http://example.com/redirectToAppStore")
로그인 후 복사

성능 고려 사항

벤치마킹의 맥락에서 첫 번째 솔루션이 (http.DefaultTransport.RoundTrip)은 수많은 요청을 동시에 수행할 때 성능 문제를 나타냅니다. 이는 전송 내에서 연결을 재사용할 가능성이 있기 때문입니다.

개별 요청에 별도의 연결이 필요한 시나리오의 경우 두 번째 솔루션(CheckRedirect 필드)을 사용하고 각 요청에 대해 새 클라이언트를 생성하는 것이 좋습니다. 이렇게 하면 각 쿼리 후에 연결이 닫히고 재사용되지 않습니다.

위 내용은 Go에서 리디렉션 없이 URL을 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿