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 중국어 웹사이트의 기타 관련 기사를 참조하세요!