Go Resty

Go Resty는 RESTful API 클라이언트를 구축하기 위한 Go 언어 라이브러리입니다. 개발자들이 쉽게 HTTP 요청을 보내고 응답을 처리할 수 있도록 간결하고 강력한 API를 제공합니다.

기능

  • GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS 및 기타 요청 방법 지원
  • 간편하고 연결 가능한 설정 및 요청 방법
  • 요청 본문은 string, []byte, struct, map, slice, io.Reader 유형일 수 있음
    • Content-Type을 자동으로 감지
    • io.Reader에 대해 버퍼 처리를 사용하지 않음
    • 미들웨어 및 요청 실행에서 원본 *http.Request 인스턴스에 Request.RawRequest로 액세스 가능
    • Request.RawRequest.GetBody()를 통해 요청 본문을 여러 번 읽을 수 있음
  • Response 객체로 더 많은 가능성 제공
    • []byte 배열로 응답 액세스 - response.Body(), 또는 string으로 - response.String()
    • 응답 시간 response.Time() 및 수신 시간 response.ReceivedAt()을 검색
  • JSONXML과 같은 콘텐츠 유형의 자동 인코딩 및 디코딩
    • Content-Type 헤더 및 struct/map 매개변수가 제공되지 않으면 기본적으로 JSON으로 설정
    • JSON 인코딩/디코딩 및 XML 인코딩/디코딩을 재정의할 수 있는 옵션 제공
  • multipart/form-data를 통한 하나 이상의 파일 간편한 업로드 지원
    • 파일의 콘텐츠 유형을 자동으로 감지
  • 백오프 재시도 메커니즘 및 재시도 조건 함수 참조 지원
  • HTTP 및 REST 요청에 대한 Resty 클라이언트의 미들웨어 지원, Request 및 Response를 포함
  • Request.SetContext 지원
  • BasicAuthBearer 토큰을 위한 인증 옵션
  • 모든 요청 또는 특정 요청의 ContentLength 값을 설정
  • 사용자 정의 루트 인증서 및 클라이언트 인증서
  • curl -o 명령어와 유사하게 HTTP 응답을 직접 다운로드/파일로 저장
  • 쿠키를 위한 Request 및 CookieJar 지원
  • 호스트 URL 대신 SRV 레코드를 기반으로 하는 요청
  • Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport 등과 같은 클라이언트 설정
  • Resty 디자인
    • 클라이언트 수준에서 설정 및 선택, 필요한 경우 요청 수준에서 재정의의 옵션 제공
    • 요청 및 응답을 위한 미들웨어
    • 필요한 경우 resty.New()를 사용하여 여러 클라이언트 생성 가능
  • 동시성을 위한 고루틴 안전
  • 디버그 모드 - 명료하고 풍부한 로그 표시
  • Gzip - Go에서 자동 처리되며 Resty에서 후속 처리
  • HTTP/2HTTP/1.1 호환
  • Bazel 지원
  • Resty의 테스트를 위한 쉬운 모킹 제공

지원되는 Go 버전

go1.16 이상을 사용하는 것이 권장됩니다.

v1.10.0 버전부터 Resty는 go modules를 지원합니다.

Resty 버전 v2 이상에서는 완전히 go modules 패키지 게시를 지원합니다. /vN 접미사 import를 이해하는 Go 버전을 사용해야 함:

  • 1.9.7+
  • 1.10.3+
  • 1.11+