สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
01-406-093-203
การพัฒนาเว็บแอปพลิเคชันด้วยเฟรมเวิร์ค โดย นายศุภมิตร จันทร์โทวงศ์
สาขาวิชาระบบสารสนเทศ คณะบริหารธุรกิจ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 1 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เช็คชื่อเข้าชั้นเรียน ให้นักศึกษาสแกน QR Code นี้เพื่อเข้าสู่ระบบเช็คชื่อเข้าเรียน ระบบจะทำการบันทึกประวัติการเข้าเรียนในวิชานี้อัตโนมัติ ผู้สอนยังไม่ได้เปิดระบบเช็คชื่อสำหรับบทเรียนสัปดาห์นี้ หรือหมดเวลากรอกข้อมูลแล้ว
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 2 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
ความเข้าใจเกี่ยวกับ RESTful API REST (Representational State Transfer) เป็นสถาปัตยกรรมสำหรับเว็บเซอร์วิส สื่อสารระหว่างเครื่องแม่ข่ายและลูกข่ายผ่าน HTTP Methods (GET, POST, PUT, DELETE) คืนค่าผลลัพธ์ข้อมูลหลักในรูปแบบสัญชาติ JSON (JavaScript Object Notation) ออกแบบ API ให้ไร้สถานะ (Stateless) เพื่อรองรับขีดความสามารถการสเกลระบบ REST API Client Request & Response 200 OK GET https://localhost:8000/api/v1/lessons
{
"success": true,
"message": "Lessons retrieved",
"data": [
{
"week": 1,
"title": "Intro to Laravel"
}
]
}อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 3 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
การสร้าง API Routes & Controllers ใน Laravel กำหนดเส้นทาง API ใน routes/api.php (มี Prefix /api โดยอัตโนมัติ) สร้างคอนโทรลเลอร์ API ด้วยคำสั่ง php artisan make:controller Api/ProductController --api ใช้คำสั่ง Route::apiResource() เพื่อลดรูปการเขียน CRUD (ไม่มีเมธอด create, edit) จัดระบบและฟอร์แมต JSON Response ใน Controller ให้เป็นมาตรฐานเดียวกัน code-example.php
// routes/api.php
use App \Http \Controllers \Api \ProductController ;
Route ::apiResource('products' , ProductController ::class );
// App/Http/Controllers/Api/ProductController.php
public function index() {
$products = Product ::paginate(10);
return response()->json ([
'success' => true,
'message' => 'Products retrieved' ,
'data' => $products
]);
}อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 4 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
ระบบความปลอดภัยและการยืนยันตัวตนด้วย Laravel Sanctum Sanctum เป็นแพ็กเกจเบาสำหรับออก API Token ให้กับอุปกรณ์พกพาหรือแอปหน้าบ้าน SPA ผู้ใช้ล็อกอินส่งอีเมล/พาสเวิร์ดมาตรวจสอบเพื่อรับ Plain Text Token กลับไป ไคลเอนต์แนบ Token ใน Header ด้วยรูปแบบ 'Authorization: Bearer <token>' คุมสิทธิ์การเรียกใช้งานด้วยมิดเดิลแวร์ middleware('auth:sanctum') code-example.php
// การเขียนล็อกอินเพื่อออก API Token ใน Controller
public function login(Request $request) {
$request->validate ([
'email' => 'required|email' ,
'password' => 'required'
]);
if (!Auth ::attempt($request->only ('email' , 'password' ))) {
return response()->json (['message' => 'Unauthorized' ], 401);
}
$user = User ::where('email' , $request->email )->firstOrFail ();
$token = $user->createToken ('auth_token' )->plainTextToken ;
return response()->json ([
'access_token' => $token,
'token_type' => 'Bearer'
]);
}อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 5 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 1) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 6 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 2) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 7 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 3) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 8 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 4) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 9 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 5) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 10 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 6) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 11 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 7) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 12 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 8) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 13 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
แบบทดสอบก่อนเรียน (Pre-test) 1. RESTful API แตกต่างจากเว็บเพจทั่วไปอย่างไร?
A. รันโค้ดบนคลาวด์เท่านั้น
B. เน้นการรับส่งเฉพาะข้อมูลดิบในรูปแบบ JSON หรือ XML ไม่ส่งโครงร่างอินเตอร์เฟซ HTML ไปด้วย เพื่อรองรับหลายแพลตฟอร์ม
C. ประมวลผลเร็วกว่าด้วยภาษา C++
D. ไม่ต้องเชื่อมฐานข้อมูล
2. แพ็กเกจน้ำหนักเบาที่เป็นทางการของ Laravel ในการทำระบบยืนยันตัวตนความปลอดภัยของ API ผ่าน Tokens คือตัวใด?
A. Laravel Sanctum
B. Laravel Passport
C. Laravel Breeze
D. Laravel Horizon
3. ข้อใดคือการส่งโทเค็นยืนยันตัวตนที่ถูกต้องผ่าน Headers ของ HTTP Request เพื่อผ่านด่านมิดเดิลแวร์ความปลอดภัย API?
A. Authorization: Bearer {token}
B. Token: {token}
C. Access-Token: {token}
D. Api-Key: {token}
4. ไฟล์ Route ใดใช้กำหนดรายการเส้นทาง (Routing) สำหรับให้บริการระบบ API โดยเฉพาะ?
A. routes/api.php
B. routes/web.php
C. routes/console.php
D. routes/channels.php
5. มิดเดิลแวร์ตัวใดใช้ตรวจสอบโทเค็นความปลอดภัยของ Laravel Sanctum ในหน้า Route API?
A. auth:sanctum
B. auth:api
C. sanctum:auth
D. api:secure
6. เมธอดใดใช้ส่งค่า JSON Response กลับออกจากคอนโทรลเลอร์ API?
A. response()->json($data, $statusCode)
B. return $data->toJson()
C. echo json_encode($data)
D. response()->send($data)
7. HTTP Status Code ใดใช้ระบุบอกผู้ใช้ปลายทางว่า 'ยืนยันตัวตนไม่ผ่าน' (Unauthorized)?
8. HTTP Status Code ใดใช้แจ้งบอกฝั่งผู้ส่งคำขอว่า ดึงข้อมูลหรือรันกิจกรรม 'สำเร็จลุล่วงด้วยดี' (OK)?
9. คำสั่งใดใช้ในการเจเนอเรตและสร้างโทเค็นคีย์ตัวใหม่ให้แก่ผู้ใช้งานใน Sanctum?
A. $user->createToken('token_name')->plainTextToken
B. $user->generateToken()
C. Sanctum::issueToken($user)
D. $user->getToken()
10. หากต้องการลบโทเค็นที่ใช้งานอยู่ปัจจุบันทั้งหมด (เช่น การ Logout ออกจากอุปกรณ์ทุกเครื่อง) ต้องสั่งด้วยคำสั่งใด?
A. $user->tokens()->delete()
B. $user->tokens()->clear()
C. Sanctum::logout($user)
D. $user->logoutTokens()
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 14 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 10) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 15 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 11) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 16 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 15 (ตอนที่ 12) ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 17 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
แบบทดสอบหลังเรียน (Post-test) 1. RESTful API แตกต่างจากเว็บเพจทั่วไปอย่างไร?
A. รันโค้ดบนคลาวด์เท่านั้น
B. เน้นการรับส่งเฉพาะข้อมูลดิบในรูปแบบ JSON หรือ XML ไม่ส่งโครงร่างอินเตอร์เฟซ HTML ไปด้วย เพื่อรองรับหลายแพลตฟอร์ม
C. ประมวลผลเร็วกว่าด้วยภาษา C++
D. ไม่ต้องเชื่อมฐานข้อมูล
2. แพ็กเกจน้ำหนักเบาที่เป็นทางการของ Laravel ในการทำระบบยืนยันตัวตนความปลอดภัยของ API ผ่าน Tokens คือตัวใด?
A. Laravel Sanctum
B. Laravel Passport
C. Laravel Breeze
D. Laravel Horizon
3. ข้อใดคือการส่งโทเค็นยืนยันตัวตนที่ถูกต้องผ่าน Headers ของ HTTP Request เพื่อผ่านด่านมิดเดิลแวร์ความปลอดภัย API?
A. Authorization: Bearer {token}
B. Token: {token}
C. Access-Token: {token}
D. Api-Key: {token}
4. ไฟล์ Route ใดใช้กำหนดรายการเส้นทาง (Routing) สำหรับให้บริการระบบ API โดยเฉพาะ?
A. routes/api.php
B. routes/web.php
C. routes/console.php
D. routes/channels.php
5. มิดเดิลแวร์ตัวใดใช้ตรวจสอบโทเค็นความปลอดภัยของ Laravel Sanctum ในหน้า Route API?
A. auth:sanctum
B. auth:api
C. sanctum:auth
D. api:secure
6. เมธอดใดใช้ส่งค่า JSON Response กลับออกจากคอนโทรลเลอร์ API?
A. response()->json($data, $statusCode)
B. return $data->toJson()
C. echo json_encode($data)
D. response()->send($data)
7. HTTP Status Code ใดใช้ระบุบอกผู้ใช้ปลายทางว่า 'ยืนยันตัวตนไม่ผ่าน' (Unauthorized)?
8. HTTP Status Code ใดใช้แจ้งบอกฝั่งผู้ส่งคำขอว่า ดึงข้อมูลหรือรันกิจกรรม 'สำเร็จลุล่วงด้วยดี' (OK)?
9. คำสั่งใดใช้ในการเจเนอเรตและสร้างโทเค็นคีย์ตัวใหม่ให้แก่ผู้ใช้งานใน Sanctum?
A. $user->createToken('token_name')->plainTextToken
B. $user->generateToken()
C. Sanctum::issueToken($user)
D. $user->getToken()
10. หากต้องการลบโทเค็นที่ใช้งานอยู่ปัจจุบันทั้งหมด (เช่น การ Logout ออกจากอุปกรณ์ทุกเครื่อง) ต้องสั่งด้วยคำสั่งใด?
A. $user->tokens()->delete()
B. $user->tokens()->clear()
C. Sanctum::logout($user)
D. $user->logoutTokens()
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 18 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
คำถามท้ายบทเรียน หากต้องการปกป้องเส้นทางการเรียกใช้ API ในไฟล์ routes/api.php โดยบังคับให้ผู้เรียกต้องส่ง API Token ผ่านระบบ Laravel Sanctum มาตรวจสอบสิทธิ์ จะต้องเรียกใช้งานมิดเดิลแวร์ตัวใด?
A. middleware('auth')
B. middleware('auth:api')
C. middleware('auth:sanctum')
D. middleware('sanctum:auth')
คำอธิบาย: มิดเดิลแวร์ 'auth:sanctum' เป็นตัวตรวจสอบสิทธิ์ผ่านระบบ Token ของ Sanctum สำหรับสิทธิ์ความปลอดภัยในระดับ Web Service API
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 19 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
Workshop 15: พัฒนา RESTful API และทดสอบด้วย Postman 1 สร้าง API Route สำหรับจัดการสินค้าในไฟล์ routes/api.php 2 ติดตั้งและเปิดใช้งานแพ็กเกจ Laravel Sanctum สำหรับระบบ API Token 3 เขียนฟังก์ชัน Login ใน Controller เพื่อทำหน้าที่ออก API Token 4 ใช้โปรแกรม Postman ในการจำลองส่งคำขอและทดสอบการยืนยันสิทธิ์ Bearer Token command_prompt.sh
// routes/api.php
Route::middleware('auth:sanctum' )->group(function () {
Route::apiResource('/products' , ProductApiController::class);
});อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 20 / 21
สัปดาห์ที่ 15 • การพัฒนา RESTful APIs และการยืนยันตัวตนด้วย Sanctum 01-406-093-203 Laravel Course
ใบงานที่ 15: พัฒนา API สำหรับระบบคำสั่งซื้อพร้อมระบบสิทธิ์ Sanctum ให้นักศึกษาพัฒนาชุด API สำหรับทำรายการคำสั่งซื้อสินค้า (Orders) และดึงประวัติสั่งซื้อ โดยคุมความปลอดภัยให้เรียกใช้ได้เฉพาะผู้ที่มี API Token ที่ออกโดย Sanctum เท่านั้น พร้อมจัดส่งรายงานเอกสาร API
เกณฑ์การตรวจประเมินผล:
ความถูกต้องของการกำหนด REST URL และโครงสร้าง JSON 40% การใช้ Middleware auth:sanctum ตรวจสอบ Token สำเร็จ 40% ความละเอียดของคำอธิบาย Parameters และ Methods ในรายงาน 20% อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์ สไลด์ที่ 21 / 21