Go Resty

Go Resty هي مكتبة لغة Go لبناء عملاء واجهة برمجة تطبيقات RESTful. توفر واجهة برمجة التطبيقات مختصرة وقوية تمكن المطورين من إرسال طلبات HTTP بسهولة ومعالجة الردود.

الميزات

  • يدعم 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()
  • يوفر المزيد من الإمكانيات مع كائن الرد
    • يصل إلى الاستجابة كمصفوفة []byte - response.Body()، أو كـ string - response.String()
    • يسترد وقت الاستجابة response.Time() والوقت الذي تم فيه الاستلام response.ReceivedAt()
  • يشفر ويفك تشفير أنواع محتوى مثل JSON و XML تلقائيًا
    • يفترض القيمة الافتراضية هي JSON إذا لم يتم توفير رأس Content-Type ومعلمات struct/map
    • يوفر خيارات لتجاوز الترميز/فك الترميز JSON وترميز/فك ترميز XML
  • تحميل بسيط لملفات واحدة أو أكثر عبر multipart/form-data
    • يكتشف تلقائيًا نوع المحتوى للملفات
  • يدعم آلية إعادة المحاولة Backoff ومراجعات دوال شرط المحاولة
  • دعم الوسيط لطلبات HTTP وREST في عميل Resty، بما في ذلك الطلب والرد
  • يدعم Request.SetContext
  • خيارات المصادقة لـ BasicAuth والرموز المميزة Bearer
  • يضبط قيمة ContentLength للطلبات كلها أو طلبات محددة
  • شهادات الجذر المخصصة وشهادات العميل
  • يقوم بتنزيل/حفظ استجابات HTTP مباشرة إلى ملف، على غرار أمر curl -o
  • دعم الطلب وCookieJar لملفات تعريف الارتباط
  • طلبات استنادًا إلى سجلات SRV بدلاً من عنوان URL المضيف
  • إعدادات العميل مثل Timeout و RedirectPolicy و Proxy و TLSClientConfig و Transport، إلخ.
  • تصميم Resty
    • يضبط ويختار على مستوى العميل، مع الخيار لتجاوز على مستوى الطلب
    • وسيط للطلبات والردود
    • يسمح بإنشاء عملاء متعددين باستخدام resty.New() إذا لزم الأمر
  • آمن بالنسبة لتناوب الروتينات
  • وضع التصحيح - عرض سجل واضح وغني
  • Gzip - تعامل Go تلقائيًا معه، مع معالجة الاحتياط في Resty
  • متوافق مع HTTP/2 و HTTP/1.1
  • دعم Bazel
  • يوفر بسهولة التزييف لاختبار Resty

الإصدارات المدعومة من Go

يُفضل استخدام go1.16 وما فوق.

ابتداءً من الإصدار v1.10.0، يدعم Resty go modules.

بدءًا من الإصدار v2 وما بعده، يدعم بشكل كامل نشر حزمة وحدات go. يتطلب استخدام Go الذي يفهم استيرادات باللاحقة /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+