Go Resty

Go Resty เป็นไลบรารีภาษา Go สำหรับการสร้างไคลเอนต์ RESTful API มันมี API ที่กระชับและมีพลังงานมากพอที่นักพัฒนาสามารถส่งคำขอ HTTP และจัดการกับการตอบสนองได้อย่างง่ายๆ

คุณสมบัติ

  • รองรับ GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS และวิธีการร้องขออื่นๆ
  • การตั้งค่าแบบง่ายและสายเชื่อมต่อและวิธีการร้องขอ
  • ส่วนของตัวของคำขออาจเป็นชนิด string, []byte, struct, map, slice, และ io.Reader
    • ตรวจหา Content-Type โดยอัตโนมัติ
    • ใช้การประมวลผลแบบไม่มีบัฟเฟอร์สำหรับ io.Reader
    • เข้าถึงตัวอย่างเดิม *http.Request ผ่านทาง Request.RawRequest ใน middleware และการดำเนินคำขอ
    • อนุญาตให้อ่านหลายครั้งของตัวของคำขอผ่านทาง Request.RawRequest.GetBody()
  • ให้ความเป็นไปได้มากขึ้นด้วยอ็อบเจกต์ Response
    • เข้าถึงตอบสนองในรูปแบบ []byte array - response.Body() หรือในรูปแบบ string - response.String()
    • ดึงข้อมูลเวลาตอบสนอง response.Time() และเวลาที่ได้รับ response.ReceivedAt()
  • เข้ารหัสและถอดรหัสประเภทเนื้อหาโดยอัตโนมัติ เช่น JSON และ XML
    • เป็นค่าเริ่มต้นเป็น JSON หากหัวข้อ Content-Type และพารามิเตอร์ struct/map ไม่ได้รับการระบุ
    • ให้ตัวเลือกสำหรับการเขียนโค้ดและการถอดรหัส JSON และการเขียนโค้ดและการถอดรหัส XML
  • การอัปโหลดแบบง่ายของไฟล์หนึ่งหรือมากกว่าผ่านทาง multipart/form-data
    • ตรวจหาประเภทเนื้อหาของไฟล์โดยอัตโนมัติ
  • รองรับกลไกลองการลอยกลับและการอ้างอิงฟังก์ชั่นเงื่อนไขลองการลอยกลับ
  • รองรับ middleware สำหรับคำขอ HTTP และ REST ในไคลเอนต์ Resty รวมถึงการคำขอและการตอบสนอง
  • รองรับ Request.SetContext
  • ตัวเลือกการให้สิทธิ์สำหรับ BasicAuth และ Bearer tokens
  • ตั้งค่าค่า ContentLength ของคำขอสำหรับทุกคำขอหรือคำขอที่ระบุโดยเฉพาะ
  • ใบรายการรากที่กำหนดเองและใบรายการของลูกค้า
  • ดาวนโหลด/บันทึกตรงไปตรงมาคำขอ HTTP ไปยังไฟล์ที่เหมือนกับคำสั่ง curl -o
  • รองรับคำขอและ CookieJar สำหรับคุกกี้
  • คำขอซึ่งขึ้นอยู่กับระเบียบของ SRV แทนที่จะอยู่ URL ของโฮสต์
  • ตัวเลือกของไคลเอนต์เช่น Timeout, RedirectPolicy, Proxy, TLSClientConfig, Transport, เป็นต้น
  • การออกแบบ Resty
    • ตั้งและเลือกที่ระดับไคลเอนต์พร้อมกับตัวเลือกในการทับที่ระดับคำขอ
    • Middleware สำหรับคำขอและการตอบสนอง
    • อนุญาตให้สร้างไคลเอนต์หลายรุ่นโดยใช้ resty.New() หากจำเป็น
  • ปลอดจาก Goroutine สำหรับการประสิทธิภาพพร้อมกับแบบ Debug mode - การแสดงบันทึกที่ชัดเจนและมีความเป็นรายละเอียด
  • Gzip - Go จัดการกับมันโดยอัตโนมัติ พร้อมกับการจัดการที่อยู่ใน Resty
  • สามารถใช้ได้กับ HTTP/2 และ HTTP/1.1
  • รองรับ Bazel
  • ให้การจำลองได้ง่ายสำหรับการทดสอบ Resty

เวอร์ชัน Go ที่รองรับ

แนะนำให้ใช้ go1.16 และรุ่นที่สูงกว่า

ตั้งแต่เวอร์ชัน v1.10.0 เป็นต้นไป Resty รองรับ go modules

ตั้งแต่เวอร์ชัน Resty v2 และสูงกว่า มันรองรับการเผยแพร่แพ็คเกจ go modules โดยเต็มที่ มันต้องการให้ Go รู้จักการนำเข้าด้วยคำสำคัญ /vN:

  • 1.9.7+
  • 1.10.3+
  • 1.11+