API คืออะไร?
API ย่อมาจาก “Application Programming Interface” เปรียบเสมือน ตัวกลาง ที่เชื่อมต่อระหว่างโปรแกรมสองตัว โดยโปรแกรมเหล่านี้สามารถอยู่คนละเครื่อง คนละภาษา หรือคนละระบบปฏิบัติการก็ได้
เมื่อมีการเรียกใช้ API จะมีกระบวนการสื่อสารข้อมูลระหว่างแอปพลิเคชันที่เรียกใช้ (client) และ API (server) ผ่านการใช้ request และ response:
- request: เป็นรูปแบบของข้อมูลที่แอปพลิเคชันที่เรียกใช้ส่งไปยัง API เพื่อขอรับบริการ หรือข้อมูลที่ต้องการ
- response: เป็นรูปแบบของข้อมูลที่ API ส่งกลับไปยังแอปพลิเคชันที่เรียกใช้ เพื่อตอบสนองต่อการร้องขอ
cURL คืออะไร?
cURL ย่อมาจาก “Client for URLs” และเป็นเครื่องมือบรรทัดคำสั่งสำหรับการส่งคำขอ HTTP สามารถใช้ถ่ายโอนข้อมูลผ่านโปรโตคอลต่างๆ รวมถึง HTTP, HTTPS, FTP และอื่นๆ โดยทั่วไปจะใช้ในการเขียนสคริปต์และระบบอัตโนมัติเพื่อโต้ตอบกับบริการเว็บและ API
ที่มา: https://linuxiac.com/curl-command-in-linux-with-exaples/
ทำไมต้องใช้ cURL ทั้งๆ มี Postman?
ถึงแม้จะมีเครื่องมือสำหรับทดสอบ APIs ที่ดีอย่าง Postman แต่ในบ้างครั้งการติดตั้ง Postman อาจจะทำได้ยาก ด้วยสภาพแวดล้อมที่ต่างกัน
cURL จึงเป็นทางเลือกที่มีดีในการแก้ปัญหานี้ เนื่องจากเป็น Command line Tool ที่ติดตั้งมาพร้อมกับระบบปฏิบัติการ และสามารถใช้งานได้ทุก OS ผ่าน Terminal
มาเริ่มต้นใช้งาน cURL กัน!
ผมจะขอพูดถึงวิธีการใช้งาน API ในแต่ละ Method ที่นิยมคือ GET, POST, PUT, DELETE มาเริ่มต้นกันเลย!
ในหัวข้อนี้ ผมจะขอนำ {JSON} Placeholder เพื่อใช้ทดสอบการ Request API นะครับ อ่านละเอียดเพิ่มเติมได้ที่: https://jsonplaceholder.typicode.com/
Basic Syntax ของการใช้ cURL
curl [options...] [url]
การใช้งาน Method GET ใน cURL
# curl https://example.com/
$ curl https://jsonplaceholder.typicode.com/posts/1
result:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
🎉 ตอนนี้เราสามารถดึงข้อมูลจาก API ออกมาดูได้แล้ว! ✨
การใช้งาน Method POST ใน cURL
การ Request Method POST ด้วยข้อมูล JSON
curl -H "Content-Type: application/json" -X POST -d '{"key":"value"}' http://example.com
หากใช้งาน Command Prompt ให้เปลี่ยน
'{"key":"value"}'
เป็น
"{\"key\":\"value\"}"
จึงจะใช้งานได้ปกติ
- -H คือ การระบุ properties ใน request headers สามารถระบุได้มากกว่า 1
- -X คือ การกำหนด HTTP Method ให้กับ Request
- -d คือ การเพิ่ม request body ในรูปแบบ string raw data หากต้องการส่ง request body ในรูปแบบ JSON จำเป็นต้องระบุ “Content-Type: application/json” โดยใช้ -H ถึงจะสามารถใช้งานได้
curl -X POST \
-H 'Content-Type:application/json' \
-d '{"title": "foo","body": "bar","userId": 1 }' \
https://jsonplaceholder.typicode.com/posts
result:
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}
🎉 ตอนนี้เราสามารถส่งข้อมูลผ่าน POST Method เพื่อส่งคำขอไปยัง API ได้แล้ว✨
การใช้งาน Method PUT ใน cURL
การ Request Method PUT ด้วยข้อมูล JSON
การใช้ PUT Method จะคล้าย ๆ กับการใช้งาน POST Method เลยครับ
curl -H "Content-Type: application/json" -X PUT -d '{"key":"value"}' http://example.com/1
ตัวอย่างการใช้งาน
curl -X PUT \
-H 'Content-Type:application/json' \
-d '{"title": "foo","body": "bar","userId": 1,"id":1 }' \
https://jsonplaceholder.typicode.com/posts/1
result:
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 1
}
🎉 ตอนนี้เราสามารถส่งข้อมูลผ่าน PUT Method เพื่อส่งคำขอไปยัง API ได้แล้ว✨
การใช้งาน Method DELETE ใน cURL
curl -X DELETE http://example.com
ตัวอย่างการใช้งาน
curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
result:
{}
🎉 ตอนนี้เราสามารถส่งข้อมูลผ่าน DELETE Method เพื่อส่งคำขอไปยัง API ได้แล้ว✨
เพิ่มเติม
การส่งคำขอรูปแบบ form data คล้ายเหมือนกำลัง submit form
curl --form "username=seth" --form "password=12345678" \
"https://example.com/api/v4/endpoint"
การแสดง response แบบเต็ม
curl -v http://example.com
การแสดงเฉพาะ header response
curl -I http://example.com
Download File จาก URL
curl -O http://example.com/file.zip
บันทึกข้อมูลที่ Response มาลงใน mock.json
curl https://jsonplaceholder.typicode.com/posts > mock.json
# ทุกครั้งที่เรียกใช้จะเขียนทับ file ที่มีอยู่
การแสดงเฉพาะ header response ที่ต้องการ
curl -I https://jsonplaceholder.typicode.com/posts | grep -E "HTTP/1.1|Content-Type:"
การแสดงข้อมูลต่าง ๆ ของ curl
curl --help
สรุป
cURL เป็นเครื่องมือคำสั่งบนระบบปฏิบัติการที่มีความยืดหยุ่น และประสิทธิภาพสูง โดยไม่จำเป็นต้องพึ่งเครื่องมืออื่นเช่น Postman ที่ต้องติดตั้งเพิ่มเติม ซึ่งทำให้เหมาะสำหรับการทดสอบ API โดยที่ไม่ต้องติดตั้งอะไรเพิ่ม cURL ช่วยให้สามารถกำหนดค่าของ HTTP request ได้อย่างละเอียด เช่น HTTP Method, Request Headers, JSON Data
แหล่งอ้างอิง
API (Application Programming Interfaces) คืออะไร สืบค้นเมื่อวันที่ 13/4/2567 จาก: https://aws.amazon.com/th/what-is/api
ว่าด้วยเรื่อง cURL ใช้อย่างไรให้ Pro ใช้อย่างไรถึงจะ Cool สืบค้นเมื่อวันที่ 13/4/2567 จาก: https://www.poolsawat.com/recommended-curl-commands/
curl Command in Linux with Examples สืบค้นเมื่อวันที่ 13/4/2567 จาก: https://www.geeksforgeeks.org/curl-command-in-linux-with-examples/
https://opensource.com/sites/default/files/gated-content/curl-cheat-sheet.pdf สืบค้นเมื่อวันที่ 13/4/2567
curl tutorial สืบค้นเมื่อวันที่ 13/4/2567 จาก: https://curl.se/docs/manual.html