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
- เข้าถึงตอบสนองในรูปแบบ
[]bytearray -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และBearertokens - ตั้งค่าค่า
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+