요청과 응답 미들웨어
Resty는 사용자 정의 요청 및 응답 처리를 위해 미들웨어를 사용하여 요청을 가로채거나 응답을 처리할 수 있는 기능을 제공합니다. 이 접근 방식은 콜백 함수보다 유연성이 높습니다.
// Resty 클라이언트 생성
client := resty.New()
// 요청 미들웨어 등록
client.OnBeforeRequest(func(c *resty.Client, req *resty.Request) error {
// 이제 클라이언트와 현재 요청 객체에 접근할 수 있습니다
// 필요한 작업 수행
return nil // 성공한 경우 nil 반환, 그렇지 않으면 오류 반환
})
// 응답 미들웨어 등록
client.OnAfterResponse(func(c *resty.Client, resp *resty.Response) error {
// 이제 클라이언트와 현재 응답 객체에 접근할 수 있습니다
// 필요한 작업 수행
return nil // 성공한 경우 nil 반환, 그렇지 않으면 오류 반환
})
오류 후크
Resty는 다음 경우에 OnError 후크를 제공합니다.
- 클라이언트가 연결 시간 초과, TLS 핸드쉐이크 실패 등으로 요청을 보낼 수 없는 경우
- 요청이 최대 시도 횟수에 도달하여 여전히 실패하는 경우
서버가 응답하는 경우, 원래 오류는 *resty.ResponseError
에 포장되며, 이는 마지막으로 수신된 응답을 포함합니다.
// Resty 클라이언트 생성
client := resty.New()
client.OnError(func(req *resty.Request, err error) {
if v, ok := err.(*resty.ResponseError); ok {
// v.Response에 서버의 마지막 응답이 포함됨
// v.Err에 원래 오류가 포함됨
}
// 오류 기록, 지표 증가 등
})
리다이렉션 정책
Resty는 여러 가용 리다이렉션 정책을 제공하며 동시에 여러 정책을 사용할 수 있습니다.
// Resty 클라이언트 생성
client := resty.New()
// 클라이언트를 위한 리다이렉션 정책 설정. 필요한 경우 정책 작성
client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(15))
// 리다이렉션 횟수, 도메인 확인 등 다중 정책 사용
client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(20),
resty.DomainCheckRedirectPolicy("host1.com", "host2.org", "host3.net"))
사용자 지정 리다이렉션 정책
RedirectPolicy 인터페이스를 구현하고 resty 클라이언트에 등록합니다. 자세한 내용은 redirect.go를 참조하십시오.
// Resty 클라이언트 생성
client := resty.New()
// resty.SetRedirectPolicy를 사용하여 원래 함수 사용
client.SetRedirectPolicy(resty.RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error {
// 여기에 로직 구현
// 리다이렉션을 계속하려면 nil을 반환하거나, 리다이렉션을 중지/방지하려면 오류를 반환
return nil
}))
//---------------------------------------------------
// 구조체를 사용하여 더 유연한 리다이렉션 정책 생성
type CustomRedirectPolicy struct {
// 여기에 변수 정의
}
func (c *CustomRedirectPolicy) Apply(req *http.Request, via []*http.Request) error {
// 여기에 로직 구현
// 리다이렉션을 계속하려면 nil을 반환하거나, 리다이렉션을 중지/방지하려면 오류를 반환
return nil
}
// resty에 등록
client.SetRedirectPolicy(CustomRedirectPolicy{/* 변수 초기화 */})
프록시 설정
기본적으로 Go
는 환경 변수 HTTP_PROXY
를 통해 프록시를 지원합니다. Resty는 SetProxy
및 RemoveProxy
를 통해 프록시 지원을 제공합니다. 필요에 따라 선택하십시오.
클라이언트 수준의 프록시 설정은 모든 요청에 적용됩니다.
// Resty 클라이언트 생성
client := resty.New()
// 프록시 URL 및 포트 설정
client.SetProxy("http://proxyserver:8888")
// 프록시 설정 제거
client.RemoveProxy()