หากคุณทำงานในเทอร์มินัลเป็นหลัก แต่พบว่าไวยากรณ์ของ curl ซับซ้อนและเอาต์พุตดิบของมันอ่านยาก curlie เป็นสิ่งที่คุณควรรู้จัก มันเป็นไคลเอนต์ HTTP ขนาดเล็กแบบคอมมานด์ไลน์ที่ทำงานครอบ curl และยืมไวยากรณ์ที่เป็นมิตร รวมถึงเอาต์พุตที่แสดงสีสันของ HTTPie มาใช้ ทำให้คุณได้รับผลลัพธ์ที่อ่านง่ายโดยไม่สูญเสียพลังของ curl ไป คู่มือนี้จะอธิบายว่า curlie คืออะไร วิธีติดตั้งและใช้งาน ความสัมพันธ์กับ curl และ HTTPie รวมถึงเวลาที่ควรเปลี่ยนจากการเรียกใช้คำสั่งในเทอร์มินัลแบบเฉพาะหน้าไปสู่เวิร์กโฟลว์ที่บันทึกและสามารถทำซ้ำได้
curlie คืออะไรกันแน่
curlie เป็นส่วนหน้า (frontend) สำหรับ curl มันไม่ได้เขียนโค้ด HTTP ขึ้นมาใหม่ แต่มันจะวิเคราะห์คำสั่งที่เรียบง่ายในสไตล์ HTTPie สร้างคำสั่ง curl ที่เทียบเท่ากัน แล้วส่งคำขอจริงไปยังไฟล์ไบนารี curl บนเครื่องของคุณ ผลลัพธ์ที่ได้จะกลับมาพร้อมกับการเน้นไวยากรณ์ (syntax highlighting) และ JSON ที่จัดรูปแบบสวยงาม

การเลือกออกแบบเช่นนั้นมีความสำคัญ เพราะ curl เป็นผู้จัดการเครือข่าย curlie จึงสืบทอดการรองรับโปรโตคอล การจัดการ TLS พฤติกรรมของพร็อกซี และแฟล็กต่างๆ ที่คุณคุ้นเคยจาก curl มาทั้งหมด คุณสามารถส่งผ่านแฟล็กดั้งเดิมของ curl ไปได้โดยตรง curlie เพียงแค่ทำให้การใช้งานทั่วไป เช่น การส่งคำขอและการอ่านผลลัพธ์ เป็นเรื่องที่ง่ายดายยิ่งขึ้น
โปรเจกต์นี้มาในรูปแบบไฟล์ไบนารี Go ไฟล์เดียวที่ดูแลโดย GitHub ไม่ต้องติดตั้งรันไทม์ใดๆ ไม่มีสภาพแวดล้อม Python ไม่มีปลั๊กอิน เพียงแค่วางไฟล์ไบนารีลงใน PATH ของคุณก็เรียบร้อย
พูดง่ายๆ คือ curlie เป็นไคลเอนต์ HTTP แบบเฉพาะกิจ (ad-hoc) ที่โต้ตอบได้สำหรับเทอร์มินัล คุณจะใช้มันเมื่อต้องการทดสอบปลายทาง (endpoint) ตรวจสอบการตอบกลับ และดำเนินการต่อไป ไม่ใช่เครื่องมือสำหรับรันการทดสอบ และก็ไม่ได้พยายามจะเป็นเช่นนั้น
ทำไมผู้คนถึงใช้มัน
curl มีอยู่ทุกที่ แต่เอาต์พุตของมันแสดงผลเป็นไบต์ดิบๆ บนหน้าจอของคุณ JSON จะมาในบรรทัดเดียวที่ไม่ได้จัดรูปแบบ ส่วนหัวและเนื้อหาจะปะปนกันเว้นแต่คุณจะเพิ่มแฟล็ก HTTPie แก้ไขปัญหาการอ่านง่ายด้วยไวยากรณ์ที่สะอาดตาและเอาต์พุตที่มีสีสัน แต่มันเป็นเครื่องมือ Python แยกต่างหากที่มีพฤติกรรมและการพึ่งพาของตัวเอง
curlie อยู่ตรงกลางระหว่างสองสิ่งนี้ คุณได้รับความสะดวกสบายในการใช้งานของ HTTPie โดยมีเอนจินของ curl อยู่เบื้องหลัง เหตุผลบางประการที่นักพัฒนาชื่นชอบมัน:
- อ่านง่ายโดยค่าเริ่มต้น ผลลัพธ์ที่ได้จะแสดงสีสัน พร้อม JSON ที่จัดรูปแบบสวยงาม และส่วนหัวที่แยกออกจากกันอย่างชัดเจน
- ไวยากรณ์ที่คุ้นเคย การตั้งค่าส่วนหัว, พารามิเตอร์การสอบถาม, และฟิลด์ JSON ใช้วิธีการแบบ HTTPie ที่กระชับ แทนที่จะใช้แฟล็ก
-Hและ-dที่ซ้อนกัน - มี curl อยู่เบื้องหลัง แฟล็กของ curl ใดๆ ก็ใช้งานได้ หากคุณรู้จัก curl คุณก็จะรู้จัก curlie ส่วนใหญ่แล้ว
- ไม่มีการพึ่งพา ไฟล์ไบนารีแบบสแตติกหนึ่งไฟล์ ไม่ต้องอัปเดตอะไรเลยนอกจากตัวไฟล์ไบนารีเอง
- โหมด Verbose แสดงการเรียกใช้ curl เรียกใช้ด้วย
-vแล้วคุณจะเห็นส่วนหัวและคำขอที่อยู่เบื้องหลัง ซึ่งทำให้เป็นเครื่องมือการเรียนรู้ที่ดีอีกด้วย
การติดตั้ง curlie
curlie ถูกเผยแพร่เป็นไฟล์ไบนารีที่สร้างไว้ล่วงหน้าและผ่านตัวจัดการแพ็กเกจทั่วไป คำสั่งที่แน่นอนอาจเปลี่ยนแปลงไปตามกาลเวลา ดังนั้นโปรดตรวจสอบหน้า GitHub releases สำหรับวิธีการปัจจุบัน แต่เส้นทางทั่วไปจะเป็นดังนี้
บน macOS ด้วย Homebrew:
brew install curlie
เมื่อติดตั้ง Go แล้ว:
go install github.com/rs/curlie@latest
หรือดาวน์โหลดไฟล์ไบนารีสำหรับแพลตฟอร์มของคุณจากหน้า releases แล้วย้ายไปไว้ใน PATH ของคุณ:
# ตัวอย่าง: วางไฟล์ไบนารีที่ดาวน์โหลดไว้ในตำแหน่งใดก็ได้บน PATH
mv curlie /usr/local/bin/
curlie --version
คุณต้องมี curl อยู่ในระบบ เนื่องจาก curlie จะเรียกใช้งานมัน บน macOS และลินุกซ์ส่วนใหญ่จะมี curl ติดตั้งมาให้อยู่แล้ว
การใช้งานพื้นฐาน
ไวยากรณ์จะให้ความรู้สึกคุ้นเคยหากคุณเคยใช้ HTTPie การร้องขอแบบ GET สั้นๆ ก็คือ URL:
curlie httpbin.org/get
curlie จะถือว่าเป็นคำสั่ง GET หากคุณไม่ได้ระบุเมธอด และจะเติม http:// ให้หากคุณละเว้นส่วนของ scheme ผลลัพธ์จะแสดงพร้อมส่วนหัวที่มีสีสันและ JSON ที่จัดรูปแบบแล้ว
หากต้องการส่ง JSON ให้ใช้คู่ key=value curlie จะตั้งค่าส่วนหัว Content-Type: application/json และสร้างเนื้อหา (body) ให้คุณโดยอัตโนมัติ:
curlie POST httpbin.org/post name=apidog role=platform
นั่นจะส่ง {"name": "apidog", "role": "platform"} เป็นเนื้อหาของคำขอ เพิ่มส่วนหัวด้วยรูปแบบ Header:value และพารามิเตอร์การสอบถามด้วย param==value:
curlie GET httpbin.org/get \
Authorization:"Bearer token123" \
search==apidog
เนื่องจาก curl ทำงานอยู่เบื้องหลัง คุณจึงสามารถใช้แฟล็กดั้งเดิมร่วมด้วยได้เสมอเมื่อไวยากรณ์แบบสั้นไม่เพียงพอ:
curlie -v --max-time 5 httpbin.org/get
แฟล็ก -v เป็นสิ่งที่คุณควรทำเป็นนิสัย มันจะแสดงส่วนหัวของคำขอและการตอบกลับ เพื่อให้คุณยืนยันได้อย่างแม่นยำว่ามีอะไรส่งผ่านเครือข่ายไปบ้าง หากคุณต้องการทบทวนเครื่องมือพื้นฐานอย่างละเอียดเพิ่มเติม คู่มือ curl REST API ของเราจะครอบคลุมแฟล็กดิบที่ curlie ใช้ครอบอยู่
curlie เทียบกับ curl เทียบกับ HTTPie
ทั้งสามตัวนี้ใช้ส่งคำขอ HTTP จากเทอร์มินัล ความแตกต่างอยู่ที่ไวยากรณ์ เอาต์พุต และสิ่งที่ทำงานอยู่เบื้องหลัง
| คุณสมบัติ | curl | HTTPie | curlie |
|---|---|---|---|
| เอนจิน | libcurl | Python (รูปแบบ requests) | curl (ครอบคลุม) |
| ไวยากรณ์ | เน้นแฟล็ก (-X, -H, -d) |
กระชับ (key=value) |
กระชับ, สไตล์ HTTPie |
| เอาต์พุต | ดิบ, ไม่จัดรูปแบบ | มีสีสัน, JSON จัดรูปแบบสวยงาม | มีสีสัน, JSON จัดรูปแบบสวยงาม |
| การติดตั้ง | ติดตั้งมาให้เกือบทุกที่ | แพ็กเกจ Python | ไฟล์ไบนารี Go ไฟล์เดียว |
| แฟล็ก curl ดั้งเดิม | มี | ไม่มี | มี (ส่งผ่าน) |
| การพึ่งพา | ไม่มี | รันไทม์ Python | ไฟล์ไบนารี curl |
| สร้างมาเพื่อ | การเขียนสคริปต์และการเรียกแบบเฉพาะหน้า | การเรียกแบบเฉพาะหน้าที่เป็นมิตร | การเรียกแบบเฉพาะหน้าที่เป็นมิตร |
สรุปอย่างตรงไปตรงมาคือ: HTTPie และ curlie แก้ปัญหาการอ่านง่ายและความสะดวกในการใช้งานแบบเดียวกัน แต่ด้วยวิธีที่แตกต่างกัน HTTPie เป็นการเขียนโค้ดใหม่ทั้งหมดด้วย Python พร้อมชุดคุณสมบัติของตัวเอง curlie เป็นส่วนหุ้มบางๆ ที่ยังคงให้คุณใช้ curl หากทีมของคุณใช้แฟล็ก curl เป็นมาตรฐาน หรือคุณต้องการเข้าถึงทุกตัวเลือกของ curl โดยตรง curlie จะเหมาะสมเป็นอย่างยิ่ง หากคุณชื่นชอบคุณสมบัติที่หลากหลายกว่าของ HTTPie และไม่ติดใจเรื่องการพึ่งพา Python, HTTPie ก็เป็นตัวเลือกที่ดี บทช่วยสอน HTTPie ของเราจะอธิบายเครื่องมือนี้อย่างละเอียด และหากคุณกำลังพิจารณาเปรียบเทียบระหว่างสองตัวนี้ การเปรียบเทียบ curl กับ HTTPie จะแสดงไวยากรณ์ของทั้งสอง
สำหรับการดูตัวเลือกเทอร์มินัลและ GUI ที่กว้างขึ้นนอกเหนือจากสามตัวนี้ โปรดดูสรุป ทางเลือกของ curl สำหรับการทดสอบ REST API ของเรา
เมื่อ curlie เป็นเครื่องมือที่เหมาะสม และเมื่อไม่ใช่
curlie โดดเด่นสำหรับการทำงานที่รวดเร็วและโต้ตอบได้:
- ตรวจสอบว่าปลายทาง (endpoint) ทำงานอยู่หรือไม่ และส่งคืนรูปแบบที่คุณคาดหวัง
- ตรวจสอบการตอบกลับ JSON ด้วยสายตา โดยไม่ต้องใช้
jqเพื่ออ่านมัน - ดีบักส่วนหัวและการยืนยันตัวตนระหว่างการพัฒนา
- การสอนหรือสาธิต HTTP เนื่องจาก
-vจะแสดงคำขอจริง
จุดที่มันไม่สามารถช่วยได้คืออะไรก็ตามที่ต้องทำซ้ำ แบ่งปัน หรือตรวจสอบโดยอัตโนมัติ curlie ไม่มีแนวคิดเรื่องคำขอที่บันทึกไว้ ไม่มีสภาพแวดล้อมที่สามารถสลับไปมาระหว่าง staging และ production ได้ ไม่มีคำยืนยัน (assertions) เพื่อตรวจสอบว่าสถานะโค้ดเป็น 200 หรือฟิลด์มีค่าเท่ากับที่คาดไว้ ไม่มีรายงานเมื่อมีสิ่งผิดปกติเกิดขึ้นตอนตี 3 ในไปป์ไลน์ของคุณ
นี่ไม่ใช่การตำหนิ curlie แต่มันเป็นเครื่องมือเฉพาะกิจที่ทำงานเฉพาะกิจได้ดี แต่เมื่อใดก็ตามที่คุณพบว่าตัวเองกำลังวางคำสั่ง curlie เดิมๆ ลงในเอกสาร หรือคัดลอกมันลงในสคริปต์เชลล์พร้อมกับการตรวจสอบด้วย grep ที่เขียนด้วยมือ นั่นแสดงว่าคุณได้ก้าวข้ามสิ่งที่ไคลเอนต์แบบโต้ตอบถูกออกแบบมาให้ทำแล้ว
เส้นทางการอัปเกรด: จากการเรียกใช้ครั้งเดียวไปสู่เวิร์กโฟลว์ที่บันทึกและทำซ้ำได้
นี่คือจุดที่เวิร์กโฟลว์จะแยกออกไปโดยธรรมชาติ ใช้ curlie ต่อไปสำหรับการสำรวจ เมื่อคำขอจำเป็นต้องอยู่ถาวร ถูกนำกลับมาใช้ใหม่ หรือรันใน CI ให้ย้ายไปยังแพลตฟอร์มที่สร้างขึ้นมาเพื่อสิ่งนั้น

Apidog คือชั้นของการคงอยู่และการทำงานร่วมกันสำหรับการเปลี่ยนผ่านนี้โดยเฉพาะ มันไม่ใช่การแทนที่ curlie ในเทอร์มินัลแบบทันทีทันใด แต่มันคือขั้นตอนต่อไปหลังจากใช้เทอร์มินัล ด้วย Apidog คุณสามารถ:
- บันทึกคำขอ ลงในคอลเลกชันที่จัดระเบียบ แทนที่จะพิมพ์ซ้ำหรือค้นหาจากประวัติเชลล์
- จัดการสภาพแวดล้อม เพื่อให้คำขอเดียวกันทำงานกับ local, staging และ production ได้โดยการสลับตัวแปร
- เพิ่มคำยืนยัน (assertions) ที่ตรวจสอบสถานะโค้ด ฟิลด์การตอบกลับ และ schema เปลี่ยนจากการตรวจสอบด้วยสายตาด้วยตนเองให้เป็นแบบอัตโนมัติ
- รันการทดสอบใน CI ด้วย
apidog runซึ่งเป็นตัวรันแบบคอมมานด์ไลน์ที่ดำเนินการสถานการณ์ทดสอบที่คุณบันทึกไว้ในไปป์ไลน์และรายงานผลว่าผ่านหรือไม่ผ่าน - แบ่งปันกับทีมของคุณ ผ่านพื้นที่ทำงานร่วมกัน ทำให้คำขอที่คุณดีบักไปครั้งหนึ่งกลายเป็นสิ่งที่ทุกคนสามารถนำกลับมาใช้ใหม่ได้
รูปแบบการใช้งานจริง: สำรวจปลายทางด้วย curlie จนกว่าคุณจะเข้าใจ แล้วสร้างมันขึ้นมาใหม่เป็นคำขอที่บันทึกไว้ใน Apidog พร้อมกับการยืนยัน (assertions) ที่แนบมาด้วย การสำรวจยังคงรวดเร็วและใช้แล้วทิ้ง ส่วนการตรวจสอบจะคงทนและเป็นอัตโนมัติ หากคุณกำลังจัดระบบวิธีการตรวจสอบปลายทางของทีมคุณ คู่มือการทดสอบ API ของเราจะครอบคลุมแนวคิดเบื้องหลังการยืนยันและสถานการณ์การทดสอบ
คำถามที่พบบ่อย
curlie ใช้แทน curl ได้หรือไม่?
ไม่เชิง curlie ทำงานบน curl ดังนั้นจึงเป็นเหมือนประตูหน้าบ้านที่เป็นมิตรมากกว่าการทดแทน มันจะแปลไวยากรณ์ที่กระชับให้เป็นคำสั่ง curl และจัดรูปแบบเอาต์พุต ตัว curl เองยังคงเป็นเอนจิน และแฟล็ก curl ดั้งเดิมทุกตัวยังคงใช้งานได้ผ่าน curlie
curlie ใช้ได้ใน CI/CD pipelines หรือไม่?
คุณสามารถเรียกใช้ curlie ในสคริปต์ได้ แต่มันไม่ได้ถูกสร้างมาสำหรับการทดสอบอัตโนมัติ มันไม่มีคำยืนยัน (assertions) ไม่มีสถานการณ์ทดสอบที่บันทึกไว้ และไม่มีรายงานที่เป็นโครงสร้าง สำหรับการทำงานในไปป์ไลน์ คุณต้องการตัวรันที่ตรวจสอบการตอบกลับและทำให้ build ล้มเหลวเมื่อมีบางอย่างผิดปกติ คำสั่ง apidog run ของ Apidog ทำหน้าที่นั้น และ รายการไคลเอนต์ทดสอบ API ยอดนิยม ของเราครอบคลุมตัวเลือกอื่นๆ สำหรับการทดสอบที่ทำซ้ำได้และเป็นมิตรกับ CI
curlie แตกต่างจาก HTTPie อย่างไร?
ทั้งสองรู้สึกคล้ายกันเพราะ curlie คัดลอกไวยากรณ์และเอาต์พุตที่มีสีสันของ HTTPie มาใช้ ความแตกต่างคือเอนจิน HTTPie เป็นเครื่องมือ Python แบบสแตนด์อโลนที่มีการใช้งานเป็นของตัวเอง curlie เป็นส่วนหุ้ม Go บางๆ รอบ curl ดังนั้นจึงสืบทอดพฤติกรรมของ curl และรับแฟล็ก curl ได้โดยตรง เลือก curlie หากคุณต้องการคงใช้ curl; เลือก HTTPie หากคุณชื่นชอบชุดคุณสมบัติแบบสแตนด์อโลนของมัน
ฉันสามารถดูคำสั่ง curl จริงที่ curlie รันได้หรือไม่?
ได้ คุณสามารถเรียกใช้ curlie ด้วยแฟล็ก -v (verbose) และมันจะแสดงส่วนหัวของคำขอและการตอบกลับ รวมถึงรายละเอียดของคำขอที่อยู่เบื้องหลัง เป็นวิธีที่สะดวกในการเรียนรู้แฟล็ก curl หรือเพื่อยืนยันอย่างแม่นยำว่ามีการส่งอะไรไปบ้าง
บทสรุป
curlie เป็นเครื่องมือเล็กๆ ที่ชาญฉลาด: มีไวยากรณ์ที่อ่านง่ายและเอาต์พุตที่มีสีสันของ HTTPie โดยมี curl ทำงานจริงอยู่เบื้องหลัง สำหรับการตรวจสอบปลายทาง การอ่านการตอบกลับ JSON และการดีบักการยืนยันตัวตนในเทอร์มินัล ถือเป็นการยกระดับคุณภาพชีวิตอย่างแท้จริงเมื่อเทียบกับ curl แบบดิบๆ แค่จำไว้ว่ามันคืออะไร มันเป็นไคลเอนต์แบบโต้ตอบ ไม่ใช่ตัวรันการทดสอบ
เมื่อคำขอของคุณจำเป็นต้องได้รับการบันทึก แชร์ ยืนยัน และรันใน CI นั่นคือสัญญาณที่ต้องย้ายไปสู่ชั้นที่สูงขึ้น ดาวน์โหลด Apidog เพื่อเปลี่ยนปลายทางที่คุณสำรวจในเทอร์มินัลให้เป็นคำขอที่บันทึกไว้ สภาพแวดล้อม และการทดสอบอัตโนมัติที่ทั้งทีมของคุณสามารถไว้วางใจได้ ใช้ curlie สำหรับงานด่วนๆ และให้ Apidog จัดการงานที่ต้องทำซ้ำๆ
