อัปเดตล่าสุด July 5, 2024
API ย่อมาจาก Application Programming Interface คืออีกหนึ่งคำที่โปรแกรมเมอร์หรือชาว dev อย่างเรา ๆ คงได้ยินบ่อย ๆ แต่หลายคนก็อาจจะยังไม่เคลียร์หรือเข้าใจจริง ๆ ว่า แท้จริงแล้วมันคืออะไร หลักการทำงานเป็นอย่างไร เพราะการพัฒนา ซอฟต์แวร์ (Software)ในแต่ละวันนั้น เชื่อว่าหลายคนต้องคลุกคลีกับ API แทบจะทุกวันก็ว่าได้ครับ
บทความนี้ผมจะพาไปทำความเข้าใจภาพรวมของ API หวังว่าจะทำให้เพื่อน ๆ หรือคุณผู้อ่าน เข้าเข้าใจหลักการ จนสามารถนำความองค์ความรู้นี้ไปต่อยอดเพื่อใช้งาน API ได้เป็นอย่างดีครับ
API (Application Programming Interface) คือ ตัวกลางระหว่าง client และ server เพื่อทำหน้าที่เป็นส่วนผสาน (Interface) ระหว่างสองส่วนนี้ ในการแลกเปลี่ยนข้อมูลและการเชื่อมต่อกันระหว่างแอปพลิเคชัน (ให้เรามองว่า API คือการสื่อสารชนิดหนึ่ง) เราจะไม่เชื่อม client เข้ากับ database ที่อยู่หลังบ้านโดยตรง จะเอา API นี่แหละมาคั่นไว้เป็นตัวกลางคอยจัดการประสาน client และ server
Client: คือ ฝั่งที่มีการเรียกใช้งาน หรืออะไรก็ตามที่ต้องมีการ request เกิดขึ้น อย่างเช่น Web Browsers, Mobile App, etc เรามีการกดปุ่ม กดค้นหา กดอ่าน กดบันทึก หรือมี action อะไรก็ตามเกิดขึ้น เหล่านี้ล้วนต้องมีการร้องขอ (request) ไปยังฝั่ง server แทบทั้งสิ้น
Server: คือ ฝั่งของโปรแกรมที่เก็บหรือมีหน้าที่จัดการกับข้อมูล โดยฝั่ง server ก็จะรับ request มาจากฝั่ง client แล้วนำมาประมวลผลว่าฝั่ง client ร้องขออะไรมา แล้วส่งข้อมูลกลับไป
การพัฒนาส่วนต่าง ๆ เหล่านี้มักจะดำเนินการตาม SDLC (Software Development Life Cycle) ซึ่งเป็นกระบวนการที่มีการวางแผนและการพัฒนาซอฟต์แวร์อย่างเป็นระบบสำหรับมืออาชีพ
ประเภทของการสื่อสารของ API หรือที่เราเรียกว่า API Protocols นั้น โดยส่วนใหญ่ที่นิยมจะถูกแบ่งออกดังต่อไปนี้
นอกเหนือไปจากนี้ยังมีอีกหลายตัวที่ไม่ได้ถูกอธิบายในบทความนี้ เช่น GraphQL, JSON-RPC, XML-RPC เป็นต้น
การทำ RESTful API นั้นจะอยู่บนพื้นฐาน HTTP Methods และนี่คือ 5 เมธอดหลัก ๆ ที่ถูกใช้งานบ่อย ๆ ครับ
HTTP Methods | คำอธิบาย |
GET | ดึงข้อมูลมาแสดงผล |
POST | เพิ่ม บันทึกข้อมูล |
PUT | อัปเดตข้อมูล |
DELETE | ลบข้อมูล |
PATCH | แก้ไขข้อมูล (บางส่วน) |
มาถึงจุดนี้หลายคนน่าจะพอมองภาพออกบ้าง แต่ยังไม่สุด เดี๋ยวเรามาดูการใช้งานในชีวิตจริง เราจะได้มองภาพได้ชัดมากขึ้นครับ
ตัวอย่างการนำ API มาหรือปลั๊กอินของผู้ให้บริการมาใช้งานในเว็บไซต์
ตัวอย่างโค้ด API (Python)
import requests
# API endpoint URLurl = "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 requestresponse = requests.get(url, params=params, headers=headers)
# Check the response status codeif 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 คือตัวเลขที่ถูกส่งกลับจาก 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)
และยังมี Status Codes อีกมากมายที่ยังไม่ได้กล่าวถึง สามารถอ่านเพิ่มเติมใน Status Codes (MDN Web Docs)
การออกแบบ API โดยมาตรฐานทั่วไปนั้น
ก็จบลงไปแล้วสำหรับบทความ API คืออะไร หลักการทำงานและการใช้งาน API เป็นอย่างไรแค่ในเบื้องต้นเท่านั้น ก่อนที่จะลงลึกในบทความการสร้าง API บทความถัด ๆ ไป ซึ่งผมก็หวังว่าจะทำให้เพื่อน ๆ มองภาพรวมและมีความรู้ความเข้าใจเกี่ยวกับ API เพิ่มมากขึ้นนะครับ
เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน
เรียนเขียนโปรแกรม