
Hướng dẫn xây dựng RESTful API bảo mật với JWT, Rate Limiting và Versioning trong CodeIgniter 4. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách xây dựng API CodeIgniter 4 chuẩn RESTful từ A–Z. Bạn sẽ học cách tạo RESTful Controller để xử lý JSON request/response, bảo mật API bằng JWT, giới hạn số lượng request (rate limiting) và quản lý versioning cho nhiều phiên bản API. Với hướng dẫn chi tiết và ví dụ minh họa, bạn có thể nhanh chóng triển khai API CodeIgniter4 chuyên nghiệp, dễ mở rộng và an toàn cho các dự án thực tế, đáp ứng tốt cả nhu cầu phát triển ứng dụng web lẫn mobile.
1. RESTful Controller (ResourceController)
CodeIgniter 4 hỗ trợ ResourceController, giúp tạo nhanh các route và method chuẩn REST.
Tạo Controller:
Sẽ tạo app/Controllers/Api/User.php
:
namespace App\Controllers\Api; use CodeIgniter\RESTful\ResourceController; class User extends ResourceController { protected $modelName = 'App\Models\UserModel'; protected $format = 'json'; public function index() { return $this->respond($this->model->findAll()); } public function show($id = null) { $data = $this->model->find($id); if (!$data) return $this->failNotFound('User not found'); return $this->respond($data); } public function create() { $data = $this->request->getJSON(true); if ($this->model->insert($data)) { return $this->respondCreated(['message' => 'User created']); } return $this->failValidationErrors($this->model->errors()); } public function update($id = null) { $data = $this->request->getJSON(true); if ($this->model->update($id, $data)) { return $this->respond(['message' => 'User updated']); } return $this->failValidationErrors($this->model->errors()); } public function delete($id = null) { if ($this->model->delete($id)) { return $this->respondDeleted(['message' => 'User deleted']); } return $this->failNotFound('User not found'); } }
Đăng ký Route:
app/Config/Routes.php
Test:
2. Xử lý JSON Request/Response
-
Lấy dữ liệu JSON từ request:
$data = $this->request->getJSON(true);
-
Trả về JSON:
return $this->respond(['status' => 'success', 'data' => $data]);
3. Authentication API (JWT)
Dùng JWT (JSON Web Token) để bảo vệ API.
Cài thư viện:
composer require firebase/php-jwt
Tạo Helper JWT:
app/Helpers/jwt_helper.php
.env
Tạo Login Controller:
public function login() { $email = $this->request->getVar('email'); $password = $this->request->getVar('password'); $user = $this->userModel->where('email', $email)->first(); if (!$user || !password_verify($password, $user['password'])) { return $this->failUnauthorized('Invalid credentials'); } $token = create_jwt($user); return $this->respond(['token' => $token]); }
Bảo vệ Route bằng JWT:
Tạo Filter:
app/Filters/JwtAuth.php
app/Config/Filters.php
'jwt' => \App\Filters\JwtAuth::class,
app/Config/Routes.php
👉 Chỉ user có JWT hợp lệ mới truy cập API /api/user
.
4. Rate Limiting & Throttling
Cài package:
composer require codeigniter4/shield
Hoặc tự viết filter:
5. Versioning API
Quản lý version bằng prefix:
Qua hướng dẫn trên, bạn đã nắm được toàn bộ quy trình xây dựng API CodeIgniter4 chuẩn RESTful: từ việc tạo ResourceController, xử lý JSON, bảo vệ API bằng JWT cho đến thiết lập rate limiting và quản lý versioning. Đây là nền tảng quan trọng giúp bạn phát triển ứng dụng web hoặc mobile có khả năng mở rộng, dễ bảo trì và đảm bảo an toàn dữ liệu.
➔ Xem thêm: Hướng dẫn cài đặt CodeIgniter 4 cơ bản
🔗 Tham khảo tài liệu chính thức: CodeIgniter 4 User Guide