API คืออะไร อธิบายหลักการทำงานและการใช้งาน API ฉบับเต็ม

   By: Withoutcoffee Icantbedev

   อัปเดตล่าสุด July 5, 2024

API คืออะไร อธิบายหลักการทำงานและการใช้งาน API ฉบับเต็ม

API ย่อมาจาก Application Programming Interface คืออีกหนึ่งคำที่โปรแกรมเมอร์หรือชาว dev อย่างเรา ๆ คงได้ยินบ่อย ๆ แต่หลายคนก็อาจจะยังไม่เคลียร์หรือเข้าใจจริง ๆ ว่า แท้จริงแล้วมันคืออะไร หลักการทำงานเป็นอย่างไร เพราะการพัฒนา ซอฟต์แวร์ (Software)ในแต่ละวันนั้น เชื่อว่าหลายคนต้องคลุกคลีกับ API แทบจะทุกวันก็ว่าได้ครับ

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


API คืออะไร ?

API (Application Programming Interface) คือ ตัวกลางระหว่าง client และ server เพื่อทำหน้าที่เป็นส่วนผสาน (Interface) ระหว่างสองส่วนนี้ ในการแลกเปลี่ยนข้อมูลและการเชื่อมต่อกันระหว่างแอปพลิเคชัน (ให้เรามองว่า API คือการสื่อสารชนิดหนึ่ง) เราจะไม่เชื่อม client เข้ากับ database ที่อยู่หลังบ้านโดยตรง จะเอา API นี่แหละมาคั่นไว้เป็นตัวกลางคอยจัดการประสาน client และ server


แล้ว Client กับ Server มันคืออะไร?

Client: คือ ฝั่งที่มีการเรียกใช้งาน หรืออะไรก็ตามที่ต้องมีการ request เกิดขึ้น อย่างเช่น Web Browsers, Mobile App, etc เรามีการกดปุ่ม กดค้นหา กดอ่าน กดบันทึก หรือมี action อะไรก็ตามเกิดขึ้น เหล่านี้ล้วนต้องมีการร้องขอ (request) ไปยังฝั่ง server แทบทั้งสิ้น

Server: คือ ฝั่งของโปรแกรมที่เก็บหรือมีหน้าที่จัดการกับข้อมูล โดยฝั่ง server ก็จะรับ request มาจากฝั่ง client แล้วนำมาประมวลผลว่าฝั่ง client ร้องขออะไรมา แล้วส่งข้อมูลกลับไป


การพัฒนาส่วนต่าง ๆ เหล่านี้มักจะดำเนินการตาม SDLC (Software Development Life Cycle) ซึ่งเป็นกระบวนการที่มีการวางแผนและการพัฒนาซอฟต์แวร์อย่างเป็นระบบสำหรับมืออาชีพ


API Protocols

ประเภทของการสื่อสารของ API หรือที่เราเรียกว่า API Protocols นั้น โดยส่วนใหญ่ที่นิยมจะถูกแบ่งออกดังต่อไปนี้

  • REST (Representational State Transfer):หรือเรียกได้อีกแบบว่า RESTful API เป็นรูปแบบที่ถูกใช้กันอย่างแพร่หลาย โดยจะขึ้นอยู่กับ HTTP Protocols คือ เช่น GET, POST, PUT, DELETE เป็นต้น โดย REST นั้นจะอยู่ในรูปแบบ stateless รองรับข้อมูลหลากหลายฟอร์แมตทั้ง JSON, XML, Text ฯลฯ
  • SOAP (Simple Object Access Protocol):เป็นโปรโตคอลสำหรับแลกเปลี่ยนข้อมูลที่มักถูกใช้ในงาน Web Services ในรูปแบบของ XML ฟอร์แมต ทำงานได้ดีแม้จะต่าง environment ต่างภาษาโปรแกรมมิ่ง
  • gRPC:เป็นโปรโตคอลสมัยใหม่ที่มีประสิทธิภาพสูงมาก โดยเหมาะสำหรับการแลกเปลี่ยนข้อมูลที่มีขนาดใหญ่ (Large Data Exchange) และมีข้อควรพิจารณาส่วนของ Bandwidth

นอกเหนือไปจากนี้ยังมีอีกหลายตัวที่ไม่ได้ถูกอธิบายในบทความนี้ เช่น GraphQL, JSON-RPC, XML-RPC เป็นต้น



HTTP Methods

การทำ RESTful API นั้นจะอยู่บนพื้นฐาน HTTP Methods และนี่คือ 5 เมธอดหลัก ๆ ที่ถูกใช้งานบ่อย ๆ ครับ 

HTTP Methods

 คำอธิบาย

GET

ดึงข้อมูลมาแสดงผล

POST

เพิ่ม บันทึกข้อมูล

PUT

อัปเดตข้อมูล

DELETE

ลบข้อมูล

PATCH

แก้ไขข้อมูล (บางส่วน)


มาถึงจุดนี้หลายคนน่าจะพอมองภาพออกบ้าง แต่ยังไม่สุด เดี๋ยวเรามาดูการใช้งานในชีวิตจริง เราจะได้มองภาพได้ชัดมากขึ้นครับ

ตัวอย่างการใช้งาน API ในชีวิตประจำวัน

  • Social Media API: เชื่อว่าทุกคนน่าจะคุ้นชินกับปุ่ม Facebook แชร์ หรือคอมเมนต์ในเว็บไซต์ที่เราเข้าไปอ่านบทความใช่ไหมครับ ที่เราสามารถกดแชร์หรือคอมเมนต์ในบทความนั้น ๆ ได้ แต่เราได้พัฒนาส่วนนี้เองไหมครับ ก็ไม่ เพราะว่าเราเรียกใช้งาน API ของ Facebook นั่นเอง ตัวอย่าง Facebook API
  • Weather API: ข้อมูลสภาพอากาศ ที่เราเห็นกันอยู่ทุกเมื่อเชื่อวัน ที่ปรากฎอยู่ในหลาย ๆ เว็บไซต์ เจ้าของเว็บเหล่านั้นเขาพัฒนาเองหรือไม่ ที่จะไปเก็บข้อมูลสภาพอากาศเหล่านั้น... ก็ไม่ เพราะว่าเขาได้เรียกใช้ Weather API จากผู้ให้บริการด้านนี้แล้วนั่นเอง 
  • Payment Gateway: ระบบชำระเงินหรือตัดบัตรในเว็บไซต์ E-commerce ต่าง ๆ ที่มีผู้ให้บริการอย่าง PayPal, Stripe เป็นต้น


ตัวอย่างการนำ API มาหรือปลั๊กอินของผู้ให้บริการมาใช้งานในเว็บไซต์


ตัวอย่างโค้ด API (Python)

import requests

# API endpoint URL
url = "https://api.example.com/endpoint"

# Request parameters (if any)
params = {
"param1": "value1",
"param2": "value2"
}

# Request headers (if any)
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}

# Make the GET request
response = requests.get(url, params=params, headers=headers)

# Check the response status code
if response.status_code == 200:
# API call successful
data = response.json()
# Process the data or perform further operations
print(data)
else:
# API call failed
print("Error:", response.status_code)
print("Response:", response.text)


จากตัวอย่างโค้ดด้านบนให้สังเกตตรง URL นั่นคือ รีซอร์สที่ผู้ให้บริการ API หรือเรียกว่า (API Provider) นั้นได้ออกแบบมาให้เราได้เรียกใช้แล้ว เราเรียกสิ่งนี้ว่า "API Endpoint" 


คำถามคือ "แล้วแบบนี้ทุกคนก็สามารถใช้ API จาก URL นี้ได้น่ะสิ?" ... ก็ใช่ครับถ้า API นั้นเปิดแบบ public แต่ในการใช้งานเชิงการค้าส่วนใหญ่ ทางผู้ที่พัฒนา API นั้นก็จะต้องออกแบบมาเพื่อให้สำหรับคนที่จะได้รับอนุญาตการเข้าถึง API Endpoint ผ่านสิ่งที่มีชื่อว่า "API Token" ซึ่งเราจะต้องขอ Token จากผู้ให้บริการมาก่อน เมื่อได้แล้วจากนั้นเราจะแนบ Token ไปกับ HTTP Headers เวลามีการ request จากฝั่ง client (ฝั่งผู้ร้องขอ) จากนั้นฝั่ง API Back-end ก็จะรู้แล้วว่าเราสามารถเข้าถึงได้นะ ก็จะส่ง response ข้อมูลออกมาพร้อมกับ Status Code 200 ที่บ่งบอกว่าเราเรียกใช้งาน API Endpoint นี้ได้สำเร็จ

อ่านเพิ่มเติม: JWT (JSON Web Token)


API Status Code

API Status code คือตัวเลขที่ถูกส่งกลับจาก server ไปยัง client เพื่อแสดงสถานะของการดำเนินการที่เกิดขึ้นใน API โดยสถานะที่ส่งกลับจะเป็นตัวบอกถึงผลลัพธ์ของการร้องขอที่เกิดขึ้น โดยจะอยู่ในรูปแบบของตัวเลข 3 หลัก ซึ่งส่วนมากจะมีรหัสสถานะที่เป็นที่รู้จักกันมาก เช่น 200, 201, 404, 500 เป็นต้น


ตัวอย่าง API Status Code ที่พบได้บ่อย


Status Codes

คำอธิบาย

200

Success (การร้องขอสำเร็จ)

201

Created (ข้อมูลถูกบันทึกสำเร็จ)

400

Bad Request (มีข้อผิดพลาดที่ฝั่ง client ทำให้การร้องขอไม่สำเร็จ (ซึ่งไม่เกี่ยวกับฝั่ง server)

401

Unauthorized (ฝั่ง client ยังไม่ได้ยืนยันตัวตน เพื่อที่จะสามารถ request ข้อมูลจาก API Endpoint นี้ได้)

403

Forbidden (ฝั่ง Client ไม่มีสิทธิเข้าถึงหน้านี้)

404

Not Found (ไม่พบ resource ของหน้านี้)

500

Internal Error (เกิดข้อผิดพลาดภายในฝั่ง Server)


Tip: จริง ๆ มีวิธีการสังเกต status code ครับ โดยสังเกตจาก prefix (คำนำหน้า) ได้ในเบื้องต้น โดยสังเกตจากเลขขึ้นต้น


วิธีสังเกตตัวเลข status codes (ให้สังเกตุตรง prefix)

  • 2xx : บ่งบอกว่า สถานะของ API คือ success (สำเร็จ)
  • 3xx : บ่งบอกว่า มีการ redirect เกิดขึ้น
  • 4xx : บ่งบอกว่า มี error จากฝั่ง client (External Error)
  • 5xx : บ่งบอกว่า มี error จากฝั่ง server (Internal Error)

และยังมี Status Codes อีกมากมายที่ยังไม่ได้กล่าวถึง สามารถอ่านเพิ่มเติมใน Status Codes (MDN Web Docs) 


API Tips

การออกแบบ API โดยมาตรฐานทั่วไปนั้น

  • Response ตัว Status Code ที่เหมาะสม เช่น สำเร็จก็ส่ง 200 หรือรีซอร์สใหม่ถูกสร้างก็ส่ง 201 กลับไปที่ client เป็นต้น
  • Response และจัดการ Error  (Error Handling) ได้อย่างเหมาะสมและสื่อความหมาย และระวังในเรื่องของข้อมูลที่ sensitive หรือเป็นความลับด้วยเช่นกันที่จะส่งกลับไปใน error messages
  • มีการกำหนดเวอร์ชันของ API (API Versioning)


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


เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน

เรียนเขียนโปรแกรม