Laravel 11 REST API: ทำไมธุรกิจถึงต้องการ API ที่แข็งแกร่ง
ในยุคที่แอปพลิเคชันต้องทำงานร่วมกันแบบ Real-time ทั้ง Mobile App, Web Frontend และ IoT Device ล้วนต้องการ REST API ที่รวดเร็ว ปลอดภัย และรองรับการขยายตัว Laravel 11 ซึ่งเปิดตัวในปี 2024 มาพร้อม Structure ที่เรียบง่ายกว่าเดิม ลด Boilerplate Code ลงอย่างมาก ทำให้นักพัฒนาสามารถสร้าง Production-ready API ได้เร็วขึ้นกว่าเดิมถึง 40%
สำหรับธุรกิจไทยที่ใช้ระบบ ERP, POS หรือแอปพลิเคชัน Mobile อยู่แล้ว การมี REST API ที่ดีหมายถึงการเชื่อมต่อทุกระบบเข้าด้วยกันได้อย่างราบรื่น บทความนี้จะพาไปสร้าง REST API ด้วย Laravel 11 ตั้งแต่ต้นจนจบใน 7 ขั้นตอน
---
ทำไมถึงเลือก Laravel 11 สำหรับ REST API
ก่อนเริ่มลงมือ ขอเปรียบเทียบ Laravel 11 กับ Framework อื่นๆ ที่ได้รับความนิยม:
| Framework | ภาษา | Learning Curve | ORM | Auth Built-in |
|---|---|---|---|---|
| Laravel 11 | PHP | ปานกลาง | Eloquent | ✅ Sanctum/Passport |
| Express.js | Node.js | ต่ำ | Mongoose/Sequelize | ❌ ต้องติดตั้งเพิ่ม |
| FastAPI | Python | ต่ำ | SQLAlchemy | ❌ ต้องติดตั้งเพิ่ม |
| Spring Boot | Java | สูง | JPA/Hibernate | ✅ Spring Security |
| NestJS | TypeScript | ปานกลาง | TypeORM | ✅ Passport |
Laravel 11 โดดเด่นตรงที่มี Ecosystem ครบครัน ทั้ง Authentication, Queue, Cache และ Rate Limiting พร้อมใช้งาน ไม่ต้องติดตั้ง Package เพิ่มมากมาย
สิ่งใหม่ใน Laravel 11 ที่นักพัฒนาต้องรู้
---
ขั้นตอนที่ 1: ติดตั้ง Laravel 11 และตั้งค่าเบื้องต้น
เริ่มต้นด้วยการติดตั้งผ่าน Composer:
```bash
composer create-project laravel/laravel my-api
cd my-api
php artisan serve
```
ตั้งค่า `.env` สำหรับ Database:
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_api_db
DB_USERNAME=root
DB_PASSWORD=secret
```
> เคล็ดลับ: สำหรับ Production บน Cloud (AWS RDS, Google Cloud SQL) ควรใช้ Connection String แทน เพื่อความปลอดภัย
---
ขั้นตอนที่ 2: ออกแบบโครงสร้าง API (Resource Design)
API ที่ดีต้องมีโครงสร้าง URL ที่ชัดเจนตามมาตรฐาน RESTful:
| HTTP Method | Endpoint | คำอธิบาย |
|---|---|---|
| GET | `/api/v1/products` | ดึงรายการสินค้าทั้งหมด |
| GET | `/api/v1/products/{id}` | ดึงสินค้าตาม ID |
| POST | `/api/v1/products` | สร้างสินค้าใหม่ |
| PUT | `/api/v1/products/{id}` | อัปเดตสินค้าทั้งหมด |
| PATCH | `/api/v1/products/{id}` | อัปเดตสินค้าบางส่วน |
| DELETE | `/api/v1/products/{id}` | ลบสินค้า |
สร้าง Route ใน `routes/api.php`:
```php
use App\Http\Controllers\Api\V1\ProductController;
Route::prefix('v1')->group(function () {
Route::apiResource('products', ProductController::class);
});
```
---
ขั้นตอนที่ 3: สร้าง Model, Migration และ Controller
Laravel 11 ช่วยให้สร้างทุกอย่างด้วยคำสั่งเดียว:
```bash
php artisan make:model Product -mcr --api
```
คำสั่งนี้จะสร้าง Model, Migration และ Controller พร้อมกันทันที
กำหนด Migration สำหรับตาราง Products:
```php
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->decimal('price', 10, 2);
$table->integer('stock')->default(0);
$table->boolean('is_active')->default(true);
$table->timestamps();
$table->softDeletes();
});
```
---
ขั้นตอนที่ 4: API Resource สำหรับ Response ที่สวยงาม
API Resource ช่วยควบคุมรูปแบบ JSON ที่ส่งกลับให้ Client ป้องกันการ Expose ข้อมูลที่ไม่จำเป็น:
```bash
php artisan make:resource ProductResource
```
```php
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => $this->description,
'price' => (float) $this->price,
'stock' => $this->stock,
'is_active' => $this->is_active,
'created_at' => $this->created_at->toISOString(),
];
}
```
---
ขั้นตอนที่ 5: Authentication ด้วย Laravel Sanctum
สำหรับ API ที่ต้องการการยืนยันตัวตน Laravel Sanctum เป็นตัวเลือกที่เบาและเหมาะสม:
```bash
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
```
สร้าง Route สำหรับ Authentication:
```php
Route::prefix('v1')->group(function () {
Route::post('/login', [AuthController::class, 'login']);
Route::post('/register', [AuthController::class, 'register']);
Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [AuthController::class, 'logout']);
Route::apiResource('products', ProductController::class);
});
});
```
---
ขั้นตอนที่ 6: Rate Limiting และ Validation
Rate Limiting — ป้องกัน API Abuse
```php
RateLimiter::for('api', function (Request $request) {
return [
Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()),
Limit::perSecond(10)->by($request->ip()), // ใหม่ใน Laravel 11
];
});
```
Form Request Validation
```php
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'price' => ['required', 'numeric', 'min:0'],
'stock' => ['required', 'integer', 'min:0'],
'description' => ['nullable', 'string'],
];
}
```
---
ขั้นตอนที่ 7: Deploy สู่ Production
Checklist ก่อน Deploy
ประสิทธิภาพ API ที่คาดหวัง
| Metric | เป้าหมาย | วิธีทำ |
|---|---|---|
| Response Time | < 200ms | Cache + Query Optimization |
| Throughput | > 1,000 req/s | Queue + Load Balancer |
| Uptime | 99.9% | Health Check + Auto Restart |
| Security Score | A+ | HTTPS + Rate Limit + Sanctum |
---
สรุป: เริ่มต้นสร้าง REST API ด้วย Laravel 11 วันนี้
Laravel 11 มอบทุกสิ่งที่ธุรกิจต้องการสำหรับการสร้าง REST API ที่แข็งแกร่ง ทั้ง Authentication, Validation, Rate Limiting และ CORS ครบในตัว ไม่ต้องพึ่ง Third-party มากมาย
ทั้ง 7 ขั้นตอนที่ผ่านมาครอบคลุมตั้งแต่การ Install จนถึง Deploy จริงบน Production ธุรกิจที่ต้องการระบบ API ที่ปลอดภัย รองรับการขยายตัว และพัฒนาต่อได้ง่าย Laravel 11 คือคำตอบที่ตรงที่สุด
> ต้องการทีม Developer ที่เชี่ยวชาญ Laravel และ Next.js? ADS FIT พร้อมช่วยออกแบบและพัฒนาระบบ Backend API สำหรับธุรกิจของคุณ [ติดต่อเราวันนี้](/contact)
