การออกแบบ RESTful API
สร้าง API ที่มีโครงสร้างดีและมีประสิทธิภาพ เพื่อการสื่อสารที่ราบรื่นระหว่างส่วนหน้าและส่วนหลัง
การออกแบบ RESTful API เป็นบทเรียน AI SaaS Builder ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI SaaS Builder และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI SaaS Builder มีบทเรียนทั้งหมด 4 บทเรียน
API: ช่องทางสื่อสารของแอป
ในซอฟต์แวร์สมัยใหม่ ส่วนต่าง ๆ ของแอปพลิเคชันมักจำเป็นต้องสื่อสารระหว่างกัน โดยเฉพาะ AI SaaS ที่ส่วนหน้า (สิ่งที่ผู้ใช้มองเห็น) ต้องโต้ตอบกับส่วนหลัง AI ที่ทรงพลังของคุณ
API (ส่วนติดต่อการเขียนโปรแกรมแอปพลิเคชัน) เปรียบได้กับเมนูในร้านอาหาร ซึ่งแสดงรายการอาหาร (ฟังก์ชัน) ที่คุณสั่งได้ พร้อมอธิบายว่าต้องระบุส่วนผสม (พารามิเตอร์) ใดบ้าง และจะได้รับอะไรกลับมา (ผลลัพธ์)
สำหรับแอปพลิเคชันบนเว็บ API แบบ RESTful เป็นวิธีที่ใช้กันมากที่สุดในการให้ระบบส่วนหน้าและส่วนหลังสื่อสารกันผ่านอินเทอร์เน็ต
REST คืออะไร
REST ย่อมาจาก การถ่ายโอนสถานะที่แสดงแทน โดยเป็นรูปแบบสถาปัตยกรรม ไม่ใช่โพรโทคอล ซึ่งกำหนดข้อจำกัดชุดหนึ่งสำหรับการออกแบบบริการเว็บ
ลองนึกภาพว่า REST คือพิมพ์เขียวที่กำหนดว่าส่วนหลังของคุณควรให้บริการแก่แอปพลิเคชันอื่นอย่างไร การปฏิบัติตามหลักการของ REST ทำให้ API มีคุณสมบัติดังนี้:
- รองรับการขยายขนาด: รองรับคำขอได้มากขึ้น
- ยืดหยุ่น: พัฒนาและปรับเปลี่ยนได้ง่าย
- ดูแลรักษาง่าย: ทำความเข้าใจและแก้ไขได้ง่ายกว่า
แนวคิดหลักคือการมองทุกสิ่งเป็น 'ทรัพยากร'
หลักการสำคัญของ REST
REST อาศัยหลักการสำคัญหลายประการเพื่อให้ได้ประโยชน์ดังกล่าว:
- ไคลเอ็นต์-เซิร์ฟเวอร์: แยกหน้าที่รับผิดชอบ โดยไคลเอ็นต์จัดการส่วนติดต่อผู้ใช้ ส่วนเซิร์ฟเวอร์จัดการการจัดเก็บและประมวลผลข้อมูล
- ไร้สถานะ: คำขอแต่ละรายการจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ต้องมีข้อมูลทั้งหมดที่จำเป็นต่อการทำความเข้าใจคำขอ เซิร์ฟเวอร์จะไม่เก็บบริบทของไคลเอ็นต์ไว้ระหว่างคำขอ
- แคชได้: สามารถระบุให้เก็บการตอบกลับไว้ในแคชเพื่อเพิ่มประสิทธิภาพ
- ส่วนติดต่อแบบสม่ำเสมอ: หลักการนี้สำคัญที่สุดต่อการออกแบบ เพราะทำให้ระบบง่ายขึ้นด้วยวิธีโต้ตอบกับทรัพยากรที่เป็นแบบเดียวกัน
ทรัพยากร: คำนามของ API ของคุณ
หลักการ 'ส่วนติดต่อแบบสม่ำเสมอ' หมายความว่า API ของคุณควรมุ่งเน้นที่ทรัพยากร ทรัพยากรคือข้อมูลใด ๆ ที่สามารถระบุชื่อได้ เช่น ผู้ใช้ สินค้า หรือคำสั่งซื้อ
ขณะออกแบบ ให้มองทรัพยากรเป็นคำนาม ไม่ใช่คำกริยา จุดปลายทางของ API (URL) ควรสะท้อนคำนามเหล่านี้ โดยทั่วไปจะใช้รูปพหูพจน์
- แทนที่จะใช้
/getUserให้ใช้/users - แทนที่จะใช้
/createProductให้ใช้/products - แทนที่จะใช้
/deleteOrder/123ให้ใช้/orders/123
วิธีนี้ทำให้ API เข้าใจง่ายและสม่ำเสมอ
เมธอด HTTP: การกระทำ
เมื่อคุณมีทรัพยากรแล้ว (เช่น /products) คุณจะใช้เมธอด HTTP มาตรฐานเพื่อดำเนินการกับทรัพยากรเหล่านั้น เมธอดเหล่านี้เปรียบเสมือนคำกริยาสำหรับคำนามของคุณ
- GET: ดึงข้อมูล (เช่น
GET /productsเพื่อดึงสินค้าทั้งหมด) - POST: สร้างข้อมูลใหม่ (เช่น
POST /productsเพื่อเพิ่มสินค้าใหม่) - PUT: อัปเดตหรือแทนที่ข้อมูลที่มีอยู่ (เช่น
PUT /products/123เพื่ออัปเดตสินค้า 123) - DELETE: ลบข้อมูล (เช่น
DELETE /products/123เพื่อลบสินค้า 123)
นอกจากนี้ยังมี PATCH สำหรับการอัปเดตข้อมูลบางส่วน แต่ทั้งสี่เมธอดนี้เป็นพื้นฐานที่สำคัญที่สุด
ตัวอย่าง: การดึงข้อมูล (GET)
มาดูกันว่าไคลเอ็นต์จะโต้ตอบกับ API แบบ RESTful เพื่อดึงข้อมูลโดยใช้เมธอด GET ได้อย่างไร
ในที่นี้ เราจะดึงโพสต์รายการหนึ่งจาก API สาธารณะสำหรับการทดสอบ URL /posts/1 ระบุทรัพยากรได้อย่างชัดเจน
import requests
# Define the API endpoint for a specific post
url = "https://jsonplaceholder.typicode.com/posts/1"
# Send a GET request
response = requests.get(url)
# Check if the request was successful (status code 200)
if response.status_code == 200:
print("Successfully retrieved data:")
print(response.json())
else:
print(f"Error: {response.status_code} - {response.text}")ตัวอย่าง: การสร้างข้อมูล (POST)
หากต้องการสร้างทรัพยากรใหม่ เราจะใช้เมธอด POST โดยส่งข้อมูลใหม่ไปในเนื้อหาคำขอ ซึ่งโดยทั่วไปจะอยู่ในรูปแบบ JSON
สังเกตว่าเราโพสต์ไปยังจุดปลายทางของทรัพยากรแบบพหูพจน์ (/posts) โดยไม่มี ID เนื่องจากเซิร์ฟเวอร์จะกำหนดหมายเลขให้เอง
import requests
import json
# Define the API endpoint for creating posts
url = "https://jsonplaceholder.typicode.com/posts"
# Define the data for the new post
new_post_data = {
"title": "CoddyKit Lesson",
"body": "This is a new post from CoddyKit!",
"userId": 1
}
# Send a POST request with the JSON data
response = requests.post(url, json=new_post_data)
# Check if the request was successful (status code 201 Created)
if response.status_code == 201:
print("Successfully created post:")
print(response.json())
else:
print(f"Error: {response.status_code} - {response.text}")รหัสสถานะ HTTP: ผลตอบกลับจาก API
หลังจากได้รับคำขอ API จะส่งรหัสสถานะ HTTP กลับมา ตัวเลขสามหลักนี้แจ้งให้ไคลเอ็นต์ทราบว่าคำขอสำเร็จหรือไม่ เกิดข้อผิดพลาดหรือไม่ และเป็นข้อผิดพลาดประเภทใด
- 2xx สำเร็จ:
200 OK(สำเร็จทั่วไป),201 Created(สร้างทรัพยากรแล้ว),204 No Content(สำเร็จ แต่ไม่มีข้อมูลส่งกลับ) - 4xx ข้อผิดพลาดของไคลเอ็นต์:
400 Bad Request(คำขอมีรูปแบบไม่ถูกต้อง),401 Unauthorized(ไม่มีการยืนยันตัวตน),403 Forbidden(ยืนยันตัวตนแล้วแต่ไม่มีสิทธิ์เข้าถึง),404 Not Found(ไม่มีทรัพยากรดังกล่าว) - 5xx ข้อผิดพลาดของเซิร์ฟเวอร์:
500 Internal Server Error(เกิดข้อผิดพลาดบางอย่างบนเซิร์ฟเวอร์)
การใช้รหัสสถานะที่เหมาะสมมีความสำคัญอย่างยิ่งต่อ API ที่ออกแบบมาเป็นอย่างดี
รูปแบบข้อมูล: JSON เพื่อความเรียบง่าย
เมื่อส่งข้อมูลไปยังหรือรับข้อมูลจาก API แบบ RESTful รูปแบบที่ใช้กันทั่วไปคือ JSON (สัญกรณ์ออบเจ็กต์ JavaScript)
JSON มีขนาดเล็ก อ่านโดยมนุษย์ได้ และภาษาโปรแกรมส่วนใหญ่สามารถแยกวิเคราะห์ได้ง่าย โดยแสดงข้อมูลเป็นคู่คีย์-ค่าและอาร์เรย์ จึงเหมาะอย่างยิ่งสำหรับข้อมูลที่มีโครงสร้าง
แม้ XML จะเคยได้รับความนิยม แต่ JSON กลายเป็นมาตรฐานโดยพฤตินัยสำหรับ API บนเว็บ เนื่องจากเรียบง่ายและมีประสิทธิภาพ
การกำหนดเวอร์ชัน API
เมื่อ AI SaaS ของคุณพัฒนา API ของคุณก็จะพัฒนาไปด้วย คุณอาจเพิ่มคุณลักษณะใหม่ เปลี่ยนโครงสร้างข้อมูล หรือลบจุดปลายทางเก่าออก นี่คือจุดที่การกำหนดเวอร์ชัน APIเข้ามามีบทบาท
การกำหนดเวอร์ชันช่วยให้คุณเปลี่ยนแปลงระบบได้โดยไม่ทำให้แอปพลิเคชันเดิมที่พึ่งพา API ของคุณหยุดทำงาน วิธีที่ใช้กันทั่วไปคือใส่หมายเลขเวอร์ชันไว้ใน URL:
/v1/users(สำหรับเวอร์ชัน 1)/v2/users(สำหรับเวอร์ชัน 2)
วิธีนี้ช่วยให้เข้ากันได้กับเวอร์ชันก่อนหน้า และทำให้ผู้ใช้เปลี่ยนผ่านได้ราบรื่นยิ่งขึ้น
ตรวจสอบทักษะการออกแบบ API ของคุณ
ข้อใดต่อไปนี้เป็นหลักการสำคัญของการออกแบบ API แบบ RESTful
ทบทวน: การออกแบบ API ที่แข็งแกร่ง
ขอแสดงความยินดี! คุณได้เรียนรู้พื้นฐานการออกแบบ API แบบ RESTful แล้ว
- API ช่วยให้ส่วนหน้าและส่วนหลังสื่อสารกันได้
- REST เป็นรูปแบบสถาปัตยกรรมที่เน้นทรัพยากรและเมธอด HTTP มาตรฐาน
- ควรระบุทรัพยากรด้วยคำนามรูปพหูพจน์ใน URL
- เมธอด HTTP (GET, POST, PUT, DELETE) กำหนดการกระทำกับทรัพยากรเหล่านี้
- รหัสสถานะ HTTP ให้ข้อมูลสำคัญเกี่ยวกับผลลัพธ์ของคำขอ
- JSON เป็นรูปแบบข้อมูลที่แนะนำสำหรับการสื่อสารผ่าน API
- การกำหนดเวอร์ชัน API ช่วยให้พัฒนาได้อย่างราบรื่นและยังเข้ากันได้กับเวอร์ชันก่อนหน้า
การเชี่ยวชาญแนวคิดเหล่านี้เป็นกุญแจสำคัญในการสร้างส่วนหลังของ AI SaaS ที่รองรับการขยายขนาดและดูแลรักษาได้ง่าย
คำถามที่พบบ่อย
บทเรียน “การออกแบบ RESTful API” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การออกแบบ RESTful API” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI SaaS Builder ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI SaaS Builder มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การออกแบบ RESTful API”
สร้าง API ที่มีโครงสร้างดีและมีประสิทธิภาพ เพื่อการสื่อสารที่ราบรื่นระหว่างส่วนหน้าและส่วนหลัง คุณปฏิบัติ AI SaaS Builder ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI SaaS Builder หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI SaaS Builder บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การออกแบบ RESTful API” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI SaaS Builder นี้ได้ไหม
ได้ บทเรียน AI SaaS Builder ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การออกแบบ RESTful API
- การจัดการฐานข้อมูลสำหรับ SaaS
- การยืนยันตัวตนและการกำหนดสิทธิ์ผู้ใช้
- การจำกัดอัตราและการจัดคิวคำขอปัญญาประดิษฐ์