Skip to main content
0

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

Pornput Sooduppatham

Author Pornput Sooduppatham

IT KMUTT

More posts by Pornput Sooduppatham

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า