Go Resty

Go Resty là một thư viện ngôn ngữ Go dùng để xây dựng các client RESTful API. Nó cung cấp một API súc tích và mạnh mẽ cho phép các nhà phát triển dễ dàng gửi các yêu cầu HTTP và xử lý phản hồi.

Tính năng

  • Hỗ trợ các phương thức yêu cầu như GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, và các phương thức khác
  • Cài đặt đơn giản và có thể chuỗi hóa, cũng như các phương thức yêu cầu
  • Thân yêu cầu có thể là kiểu string, []byte, struct, map, slice, và io.Reader
    • Tự động phát hiện Content-Type
    • Sử dụng xử lý không đệm cho io.Reader
    • Truy cập vào phiên bản ban đầu *http.Request thông qua Request.RawRequest trong middleware và thực thi yêu cầu
    • Cho phép đọc nhiều lần thân yêu cầu thông qua Request.RawRequest.GetBody()
  • Cung cấp nhiều khả năng với đối tượng Phản hồi
    • Truy cập vào phản hồi dưới dạng mảng []byte - response.Body(), hoặc dưới dạng string - response.String()
    • Lấy thời gian phản hồi response.Time() và thời gian nhận response.ReceivedAt()
  • Tự động mã hóa và giải mã các loại nội dung như JSONXML
    • Mặc định là JSON nếu tiêu đề Content-Type và tham số struct/map không được cung cấp
    • Cung cấp tùy chọn để ghi đè mã hóa/giải mã JSON và mã hóa/giải mã XML
  • Tải lên đơn giản của một hoặc nhiều tệp qua multipart/form-data
    • Tự động phát hiện loại nội dung của các tệp
  • Hỗ trợ cơ chế thử lại backoff và tham chiếu hàm điều kiện thử lại
  • Hỗ trợ middleware cho yêu cầu HTTP và REST trong client Resty, bao gồm Yêu cầu và Phản hồi
  • Hỗ trợ Request.SetContext
  • Tùy chọn xác thực cho BasicAuthBearer tokens
  • Đặt giá trị ContentLength của yêu cầu cho tất cả các yêu cầu hoặc yêu cầu cụ thể
  • Chứng chỉ gốc tùy chỉnh và chứng chỉ client
  • Tải về/Lưu trực tiếp các phản hồi HTTP dưới dạng tệp, tương tự như lệnh curl -o
  • Hỗ trợ Yêu cầu và CookieJar cho cookies
  • Yêu cầu dựa trên bản ghi SRV thay vì URL máy chủ
  • Cài đặt client như Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, v.v.
  • Thiết kế Resty
    • Đặt và chọn ở cấp độ client, với tùy chọn ghi đè ở cấp độ yêu cầu
    • Middleware cho yêu cầu và phản hồi
    • Cho phép tạo nhiều client bằng cách sử dụng resty.New() nếu cần thiết
  • An toàn Goroutine để đa luồng
  • Chế độ Debug - hiển thị log sạch và phong phú
  • Gzip - Go xử lý nó một cách tự động, với xử lý dự phòng trong Resty
  • Tương thích với HTTP/2HTTP/1.1
  • Hỗ trợ Bazel
  • Cung cấp việc giả mạo dễ dàng cho kiểm thử Resty

Phiên bản Go được hỗ trợ

Đề nghị sử dụng go1.16 trở lên.

Bắt đầu từ phiên bản v1.10.0, Resty hỗ trợ go modules.

Từ phiên bản Resty v2 và cao hơn, nó hoàn toàn hỗ trợ việc xuất gói modules cho golang. Yêu cầu sử dụng phiên bản Go hiểu biết về nhập /vN suffix:

  • 1.9.7+
  • 1.10.3+
  • 1.11+