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+