Go Resty

Go Resty adalah sebuah perpustakaan bahasa Go untuk membangun klien API RESTful. Ini menyediakan API yang ringkas dan powerful yang memungkinkan pengembang untuk dengan mudah mengirim permintaan HTTP dan menangani respons.

Fitur

  • Mendukung metode permintaan GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, dan lainnya
  • Pengaturan permintaan dan metode yang sederhana dan dapat di-chain
  • Badan permintaan bisa berupa tipe string, []byte, struct, map, slice, dan io.Reader
    • Mendeteksi otomatis Content-Type
    • Menggunakan pemrosesan tanpa buffering untuk io.Reader
    • Mengakses instance asli *http.Request melalui Request.RawRequest dalam middleware dan eksekusi permintaan
    • Memungkinkan beberapa pembacaan badan permintaan melalui Request.RawRequest.GetBody()
  • Memberikan lebih banyak kemungkinan dengan objek Respons
    • Mengakses respons sebagai array []byte - response.Body(), atau sebagai string - response.String()
    • Mendapatkan waktu respons response.Time() dan waktu penerimaan response.ReceivedAt()
  • Mengodekan dan mendekodekan tipe konten seperti JSON dan XML secara otomatis
    • Defaultnya menggunakan JSON jika header Content-Type dan parameter struct/map tidak disediakan
    • Memberikan opsi untuk mengganti pengodekan/pendekodekan JSON dan pengodekan XML
  • Mengunggah satu atau lebih file secara mudah melalui multipart/form-data
    • Mendeteksi otomatis tipe konten dari file-file tersebut
  • Mendukung mekanisme percobaan ulang backoff dan referensi fungsi kondisi percobaan ulang
  • Mendukung middleware untuk permintaan HTTP dan REST dalam klien Resty, termasuk Permintaan dan Respons
  • Mendukung Request.SetContext
  • Opsi otorisasi untuk token BasicAuth dan Bearer
  • Mengatur nilai ContentLength permintaan untuk semua permintaan atau permintaan tertentu
  • Sertifikat akar kustom dan sertifikat klien
  • Mengunduh/menyimpan respons HTTP secara langsung ke file, mirip dengan perintah curl -o
  • Dukungan Permintaan dan CookieJar untuk cookie
  • Permintaan berdasarkan catatan SRV alih-alih URL host
  • Pengaturan klien seperti Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, dll.
  • Desain Resty
    • Menetapkan dan memilih pada tingkat klien, dengan opsi override pada tingkat permintaan
    • Middleware untuk permintaan dan respons
    • Memungkinkan pembuatan beberapa klien menggunakan resty.New() jika diperlukan
  • Aman untuk goroutine saat digunakan secara bersamaan
  • Mode debug - tampilan log yang jelas dan kaya
  • Gzip - Go menanganinya secara otomatis, dengan penanganan fallback di Resty
  • Kompatibel dengan HTTP/2 dan HTTP/1.1
  • Dukungan Bazel
  • Memberikan mock yang mudah untuk pengujian Resty

Versi Go yang Didukung

Disarankan untuk menggunakan go1.16 ke atas.

Mulai dari versi v1.10.0, Resty mendukung go modules.

Mulai dari Resty versi v2 dan yang lebih tinggi, ini sepenuhnya mendukung penerbitan paket go modules. Ini memerlukan penggunaan versi Go yang memahami impor dengan sufiks /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+