สัปดาห์ที่ 12 API

จุดประสงค์การเรียนรู้

  1. อธิบายแนวคิด REST API และ Client-Server ได้
  2. ใช้ HTTP Method และ JSON ในการรับส่งข้อมูลได้
  3. เขียนโปรแกรมเชื่อมต่อ API และประมวลผลข้อมูลได้

เนื้อหา

REST API

REST API เป็นแนวทางให้ระบบสื่อสารกันผ่าน HTTP โดยแยกบทบาท Client และ Server ชัดเจน Client ขอข้อมูลหรือส่งคำสั่ง ส่วน Server ประมวลผลและตอบกลับ

HTTP Method

HTTP Method ที่ใช้บ่อย ได้แก่ GET สำหรับอ่านข้อมูล POST สำหรับสร้าง PUT/PATCH สำหรับแก้ไข และ DELETE สำหรับลบข้อมูล

JSON

JSON เป็นรูปแบบข้อมูลที่อ่านง่ายและใช้แพร่หลายใน API ผู้เรียนจะฝึกแปลงข้อมูล JSON เป็นโครงสร้างข้อมูลในโปรแกรมและตรวจสอบค่าที่ได้รับ

Workshop

เชื่อมต่อ API ตัวอย่าง ดึงข้อมูล JSON มาประมวลผล แสดงผล และจัดการกรณี API ตอบกลับผิดพลาด

รายละเอียดการเรียนรู้

ผู้เรียนเข้าใจ API ในฐานะสัญญาระหว่างโปรแกรม โดยพิจารณา Endpoint, Method, Request, Response, Status Code และรูปแบบข้อมูล JSON การเขียนโปรแกรมเชื่อม API ต้องตรวจสอบทั้งกรณีสำเร็จและไม่สำเร็จ เช่น 400, 401, 404 และ 500

การออกแบบโปรแกรมที่ใช้ API ควรแยกส่วนเรียก API ออกจากส่วนประมวลผลและส่วนแสดงผล เพื่อให้ทดสอบง่ายและเปลี่ยนแหล่งข้อมูลได้ในอนาคต

แนวปฏิบัติ

  1. ตรวจ Status Code ก่อนใช้ข้อมูล
  2. Validate JSON field ที่จำเป็น
  3. จัดการ timeout หรือ network error
  4. แยก API client เป็นฟังก์ชันหรือคลาสเฉพาะ

แบบฝึกหัด

เรียก API สาธารณะหรือ API จำลอง แปลง JSON เป็นข้อมูลในโปรแกรม และแสดงผลลัพธ์พร้อมจัดการ error อย่างน้อย 3 กรณี

รูปแบบการนำเสนอเพิ่มเติมตามแม่แบบ

API (Application Programming Interface) คือสัญญาการสื่อสารระหว่างโปรแกรม โดย REST API มักใช้ HTTP Method และ JSON ในการรับส่งข้อมูล

%%{init: {'theme': 'base', 'themeVariables': {'background': '#282828','primaryColor': '#3c3836','primaryTextColor': '#fbf1c7','primaryBorderColor': '#fabd2f','lineColor': '#8ec07c','secondaryColor': '#504945','tertiaryColor': '#665c54'}}}%%
sequenceDiagram
  participant C as Client
ฝั่งเรียกใช้ participant A as API Server
ฝั่งบริการ C->>A: GET /items
ขอข้อมูล A-->>C: 200 OK + JSON
ตอบกลับข้อมูล C->>C: Parse JSON
แปลงข้อมูล

สมการอัตราความสำเร็จของ API

R=sn×100%

ตัวอย่างโค้ดทดลอง

#include <iostream>
#include <string>
using namespace std;

int main() {
    // ตัวอย่าง JSON ที่ได้จาก API จำลอง
    string json = "{\"id\":1,\"name\":\"Book\"}";
    cout << "API Response: " << json << endl;
    cout << "Parse field name manually for practice" << endl;
    return 0;
}
HTTP Method จุดประสงค์ ตัวอย่าง
GET อ่านข้อมูล GET /students
POST สร้างข้อมูล POST /students
PUT/PATCH แก้ไขข้อมูล PATCH /students/1
DELETE ลบข้อมูล DELETE /students/1

กลับรายวิชา