رِستی Go

رستی یک کتابخانه زبان Go برای ساختن مشتریان RESTful API می‌باشد. این کتابخانه یک API مختصر و قدرتمند فراهم می‌کند که به توسعه دهندگان این امکان را می‌دهد که به راحتی درخواست‌های HTTP را ارسال کرده و پاسخ‌ها را اداره کنند.

ویژگی‌ها

  • پشتیبانی از روش‌های GET، POST، PUT، DELETE، HEAD، PATCH، OPTIONS و دیگر درخواست‌ها
  • تنظیمات ساده و قابل زنجیره‌ای و روش‌های درخواست
  • بدنه درخواست می‌تواند از نوع string ، []byte ، struct ، map ، slice و io.Reader باشد     - به طور خودکار Content-Type را شناسایی می‌کند     - برای io.Reader از پردازش بدون بافر استفاده می‌کند     - از طریق Request.RawRequest در میان‌نرم‌افزار و اجرای درخواست به نمونه اصلی *http.Request دسترسی دارد     - امکان خواندن چندین بار بدنه درخواست را از طریق Request.RawRequest.GetBody() ارائه می‌دهد
  • با اشیاء Response امکانات بیشتری ارائه می‌دهد     - به عنوان یک آرایه []byte به پاسخ دسترسی دارد - response.Body() یا به عنوان یک string - response.String()     - زمان پاسخ را response.Time() و زمان دریافت شده را response.ReceivedAt() بازیابی می‌کند
  • به طور خودکار انکود و دیکود انواع محتوا مانند JSON و XML     - به صورت پیش‌فرض به JSON می‌پردازد اگر هدر Content-Type و پارامترهای struct/map ارائه نشده باشد     - گزینه‌هایی برای نادیده گرفتن کدگذاری/کدهگذاری JSON و کدهگذاری/کدگذاری XML ارائه می‌دهد
  • آپلود ساده یک یا چند فایل از طریق multipart/form-data     - به صورت خودکار نوع محتوای فایل‌ها را شناسایی می‌کند
  • پشتیبانی از مکانیزم تلاش مجدد و ارجاع تابع شرط تلاش مجدد
  • پشتیبانی میان‌نرم‌افزار برای درخواست‌های 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 و بالاتر Resty، به صورت کامل از منتشر کردن بسته‌های go modules پشتیبانی می‌کند. این نسخه نیازمند استفاده از یک نسخه Go است که وارد /vN imports را درک می‌کند:

  • 1.9.7+
  • 1.10.3+
  • 1.11+