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 quaRequest.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()
- Tự động phát hiện
- 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ạngstring
-response.String()
- Lấy thời gian phản hồi
response.Time()
và thời gian nhậnresponse.ReceivedAt()
- Truy cập vào phản hồi dưới dạng mảng
- Tự động mã hóa và giải mã các loại nội dung như
JSON
vàXML
- 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
- Mặc định là
- 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
BasicAuth
vàBearer
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/2
vàHTTP/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+