| โครงสร้าง request |
|---|
| กำหนด HTTP method | curl -X POST https://api.test |
| เพิ่ม request header | curl -H "Accept: application/json" URL |
| ส่ง body (ตั้งเป็น POST พร้อม content type เริ่มต้น) | curl -d "name=Ada" URL |
| นำค่า -d ไปต่อเป็น query params บน GET | curl -G -d "q=hi" URL |
| ส่งข้อมูล multipart form (อัปโหลดไฟล์) | curl -F "file=@photo.png" URL |
| ส่งข้อมูลฟอร์มโดยเข้ารหัส URL | curl --data-urlencode "name=Ada Lovelace" URL |
| อัปโหลดไฟล์ด้วย PUT | curl -T big.zip URL |
| ต่อท้ายไฟล์ระยะไกลแทนที่จะเขียนทับ | curl -a -T log.txt ftp://server.test/logs/log.txt |
| JSON และ API |
|---|
| ส่ง JSON พร้อม content type ที่ถูกต้อง | curl -H "Content-Type: application/json" -d '{"a":1}' URL |
| ส่งเนื้อหาไฟล์เป็น body | curl -d @body.json URL |
| ส่ง JSON โดยไม่ต้องตั้ง header เอง (curl 7.82+) | curl --json '{"a":1}' URL |
| การยืนยันตัวตน |
|---|
| ยืนยันตัวตน HTTP Basic ด้วยผู้ใช้และรหัสผ่าน | curl -u ada:s3cr3t URL |
| ส่ง OAuth bearer token | curl --oauth2-bearer TOKEN URL |
| ส่ง token scheme ใดก็ได้ด้วยตนเอง | curl -H "Authorization: Bearer TOKEN" URL |
| แสดง client certificate และ key สำหรับ mutual TLS | curl --cert client.pem --key key.pem URL |
| ตรวจสอบเซิร์ฟเวอร์ด้วยไฟล์ CA bundle หนึ่งไฟล์ | curl --cacert ca.pem URL |
| ตรวจสอบเซิร์ฟเวอร์ด้วยไดเรกทอรีที่เก็บ CA | curl --capath /etc/ssl/certs URL |
| ส่ง request ผ่าน proxy | curl -x http://proxy.test:8080 URL |
| ข้ามการตรวจ TLS เฉพาะช่วงไปยัง proxy | curl -x https://proxy.test:8443 --proxy-insecure URL |
| กำหนด TLS 1.3 เป็นเวอร์ชันต่ำสุด | curl --tlsv1.3 URL |
| การแสดงตัวตน |
|---|
| ส่ง User-Agent แบบกำหนดเอง | curl -A "Mozilla/5.0" URL |
| ส่ง header Referer | curl -e https://example.com/page URL |
| ส่งคุกกี้ไปพร้อม request | curl -b "session=abc123" URL |
| บันทึกคุกกี้จาก response ลงไฟล์ | curl -c cookies.txt URL |
| ผลลัพธ์ |
|---|
| เขียน body ลงไฟล์ | curl -o page.html URL |
| บันทึก body โดยใช้ชื่อไฟล์จากระยะไกล | curl -O https://site/file.tgz |
| พิมพ์ response header ไว้เหนือ body | curl -i URL |
| ดึงเฉพาะ header (ส่ง HEAD) | curl -I URL |
| ซ่อนตัววัดความคืบหน้าและข้อผิดพลาด | curl -s URL |
| พิมพ์สตริงรูปแบบหลังจบ body (เวลา, สถานะ) | curl -w "%{http_code}\n" -o /dev/null URL |
| ออกด้วยรหัสไม่ใช่ศูนย์เมื่อเกิด HTTP error และข้าม body ของข้อผิดพลาด | curl -f URL |
| ออกด้วยรหัสไม่ใช่ศูนย์เมื่อเกิด HTTP error แต่ยังพิมพ์ body | curl --fail-with-body URL |
| ตั้งชื่อไฟล์ที่บันทึกจาก header Content-Disposition | curl -OJ URL |
| เชื่อมต่อการถ่ายโอนที่ค้างไว้ต่อจากจุดที่หยุด | curl -C - -O URL |
| แสดงแถบความคืบหน้าแทนตัววัดปกติ | curl -# -O URL |
| พิมพ์ข้อผิดพลาดแม้รันแบบเงียบ | curl -sS URL |
| เขียน response header ลงไฟล์ | curl -D headers.txt URL |
| ขอ response แบบบีบอัดและถอดรหัสให้ | curl --compressed URL |
| สร้างไดเรกทอรีที่ขาดหายในเส้นทาง -o | curl -o cache/api/data.json --create-dirs URL |
| Redirect และการเชื่อมต่อ |
|---|
| ตาม redirect ประเภท 3xx | curl -L URL |
| วินาทีสูงสุดที่รอการเชื่อมต่อ TCP | curl --connect-timeout 5 URL |
| วินาทีสูงสุดสำหรับ request ทั้งหมด | curl --max-time 30 URL |
| ข้ามการตรวจสอบใบรับรอง TLS | curl -k https://self-signed.test |
| ลองซ้ำข้อผิดพลาดชั่วคราวสูงสุด N ครั้ง | curl --retry 3 URL |
| ลองซ้ำกับทุกข้อผิดพลาด ไม่ใช่แค่แบบชั่วคราว | curl --retry 3 --retry-all-errors URL |
| บังคับการเชื่อมต่อผ่าน IPv4 หรือ IPv6 | curl -4 URL |
| จับคู่ host และพอร์ตกับที่อยู่ โดยข้าม DNS | curl --resolve api.test:443:127.0.0.1 https://api.test |
| ผูกการถ่ายโอนกับ network interface หรือที่อยู่ | curl --interface eth0 URL |
| ถ่ายโอนหลาย URL พร้อมกัน | curl -Z URL1 URL2 |
| ใช้ HTTP/2 หรือ HTTP/3 สำหรับการถ่ายโอน | curl --http3 URL |
| สตรีม body เมื่อถึงแทนการเก็บในบัฟเฟอร์ | curl -N URL |
| อ่านแฟล็กเพิ่มเติมจากไฟล์ config | curl -K flags.cfg URL |
| ดีบัก |
|---|
| พิมพ์การแลกเปลี่ยน request และ response แบบเต็ม | curl -v URL |
| แสดงข้อมูลที่ส่งและรับทั้งหมดแบบ hex-dump | curl --trace - URL |