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+