On this page
API, JSON & REST
ช่องทางให้โปรแกรมคุยกัน, รูปแบบข้อมูล JSON และแนวทางออกแบบ REST — พร้อมเรียก API จริงด้วย Python
API (Application Programming Interface) คือ "ช่องทาง" ให้โปรแกรมคุยและขอข้อมูลกัน เช่นแอปสภาพอากาศเรียก API ของกรมอุตุฯ เพื่อขอข้อมูล หัวข้อนี้สอนรูปแบบข้อมูล JSON แนวทาง REST และวิธีเรียก API จริง
JSON — รูปแบบข้อมูลมาตรฐาน
JSON (JavaScript Object Notation) คือรูปแบบข้อความที่นิยมใช้ส่งข้อมูลระหว่างโปรแกรม หน้าตาคล้าย dictionary ของ Python มาก จึงเข้าใจได้ทันที
{
"name": "Aphisit",
"age": 25,
"skills": ["Python", "SQL"],
"is_student": true,
"address": {
"city": "Bangkok",
"zip": "10110"
}
}import json
# แปลง JSON (ข้อความ) -> dict ของ Python
text = '{"name": "Aphisit", "age": 25}'
data = json.loads(text)
print(data["name"]) # Aphisit (ใช้เหมือน dict)
# แปลง dict -> JSON (ข้อความ)
person = {"name": "Mali", "age": 22}
print(json.dumps(person)) # {"name": "Mali", "age": 22}เรียก API จริงด้วย Python
ใช้ไลบรารี requests (ติดตั้งด้วย pip install requests) ลองเรียก API ฟรีที่คืนข้อมูลตัวอย่าง
import requests
res = requests.get("https://jsonplaceholder.typicode.com/users/1")
print(res.status_code) # 200 (สำเร็จ)
data = res.json() # แปลง JSON response เป็น dict
print(data["name"]) # ชื่อผู้ใช้
print(data["email"]) # อีเมล
# ส่งข้อมูลด้วย POST
new_post = {"title": "สวัสดี", "body": "โพสต์แรก", "userId": 1}
res = requests.post("https://jsonplaceholder.typicode.com/posts",
json=new_post)
print(res.status_code) # 201 (สร้างสำเร็จ)REST — แนวทางออกแบบ API ที่นิยมที่สุด
REST เป็นชุดแนวทางการออกแบบ API หลักคือมองทุกอย่างเป็น "ทรัพยากร" (resource) เข้าถึงผ่าน URL และใช้ HTTP method สื่อความหมายของการกระทำ ทำให้ API คาดเดาได้และเป็นระเบียบ
| Method + URL | ความหมาย |
|---|---|
| GET /users | ดึงผู้ใช้ทั้งหมด |
| GET /users/1 | ดึงผู้ใช้ id 1 |
| POST /users | สร้างผู้ใช้ใหม่ |
| PUT /users/1 | แก้ไขผู้ใช้ id 1 |
| DELETE /users/1 | ลบผู้ใช้ id 1 |
URL บอก "ทรัพยากรอะไร" (users) ส่วน method บอก "ทำอะไรกับมัน" (ดู/สร้าง/แก้/ลบ) เมื่อรู้แค่ชื่อทรัพยากร ก็เดา URL ได้ทันที นี่คือเสน่ห์ของ REST รายละเอียดเชิงลึกอยู่ในหน้าพื้นฐานที่ต้องแม่นของส่วนเตรียมสัมภาษณ์
สรุปหัวข้อนี้
- API คือช่องทางให้โปรแกรมคุย/ขอข้อมูลกัน
- JSON คือรูปแบบข้อมูลมาตรฐาน หน้าตาคล้าย dict — แปลงด้วย json.loads/dumps
- เรียก API ด้วย requests.get()/post() แล้วใช้ .json() แปลงผลเป็น dict
- REST ใช้ URL ระบุทรัพยากร + HTTP method ระบุการกระทำ ทำให้ API คาดเดาได้
1) ใช้ requests เรียก https://jsonplaceholder.typicode.com/todos/1 แล้วพิมพ์ค่า title 2) ดึงรายชื่อผู้ใช้ทั้งหมดจาก /users แล้ววนพิมพ์เฉพาะชื่อ 3) แปลง dict เป็น JSON ด้วย json.dumps 4) ออกแบบ REST endpoint สำหรับระบบบล็อก (ดู/สร้าง/แก้/ลบ โพสต์)