มาทำความเข้าใจส่วนประกอบของเส้นทาง (Route) นี้ทีละส่วนกันครับ:
ตัวอย่าง
Route::get(‘asset/getall’, [AssetController::class, ‘getall’])->name(‘asset.getall’);
1. Route::get()
- เป็นการกำหนดว่า Route นี้จะตอบสนองเฉพาะ HTTP GET requests เท่านั้น
- เหมาะสำหรับการดึงข้อมูล (Fetch data) โดยไม่มีการแก้ไขข้อมูล
2. 'asset/getall'
- URI Path ที่จะเข้าถึง Route นี้
- ตัวอย่าง:
http://your-domain.com/asset/getall
3. [AssetController::class, 'getall']
- กำหนดให้ใช้ method
getall
ในAssetController
ในการจัดการ request - ตัวอย่าง Controller method:
class AssetController extends Controller
{
public function getall()
{
$assets = Asset::all(); // ดึงข้อมูลทั้งหมด
return response()->json($assets); // ส่งกลับเป็น JSON
}
}
4. ->name('asset.getall')
- กำหนดชื่อให้ Route เพื่ออ้างอิงในแอปพลิเคชัน
- ตัวอย่างการใช้งานชื่อ Route:
// ใน Blade template
<a href="{{ route('asset.getall') }}">ดูข้อมูลทั้งหมด</a>
// ใน Controller
return redirect()->route('asset.getall');
สรุปการทำงานทั้งหมด:
เมื่อมี request เข้ามาที่ URL /asset/getall
ด้วย method GET
→ Laravel จะเรียกใช้ method getall()
ใน AssetController
→ method นี้จะทำการดึงข้อมูลและส่งกลับ response ไปยังผู้ใช้
ตัวอย่างการใช้งานจริง:
สมมติว่าเราต้องการดึงข้อมูล Asset ทั้งหมดจาก API
// ใช้ Axios ใน JavaScript
axios.get('/asset/getall')
.then(response => {
console.log(response.data);
});
ประโยชน์ของการตั้งชื่อ Route:
- ทำให้โค้ดอ่านง่ายและบำรุงรักษาง่ายขึ้น
- เปลี่ยน URI ได้โดยไม่ต้องแก้ไขทุกจุดที่อ้างอิง
- ใช้ร่วมกับฟีเจอร์อื่นๆ ของ Laravel เช่น Middleware, Route Groups ได้ง่ายขึ้น
ควรใช้เมื่อไหร่?
- เมื่อต้องการสร้าง API endpoint สำหรับดึงข้อมูล
- เมื่อต้องการแสดงหน้าดูข้อมูลทั้งหมด
- เมื่อต้องการใช้ข้อมูลในรูปแบบ JSON สำหรับ Frontend Framework เช่น Vue, React