Trả JSON Response
Trong bài học này, bạn sẽ học cách trả về phản hồi dưới dạng JSON, đây là định dạng phổ biến trong các ứng dụng API hiện đại. Slim Framework hỗ trợ rất tốt cho việc trả JSON thông qua phương thức withJson()
. Bài học cũng đề cập đến cách đặt HTTP status code và header phù hợp.
Mục tiêu
- Biết cách trả về dữ liệu JSON từ route hoặc controller.
- Sử dụng đúng định dạng phản hồi và mã trạng thái HTTP.
- Làm quen với cấu trúc phản hồi chuẩn RESTful.

1 Trả JSON với withJson()
Slim hỗ trợ phương thức withJson()
giúp bạn dễ dàng trả về phản hồi dạng JSON mà không cần cấu hình thêm:
return $response->withJson([
'success' => true,
'message' => 'OK',
'data' => [...]
]);
Phương thức này sẽ:
- Thiết lập header
Content-Type: application/json
- Tự động
json_encode
dữ liệu
2 Thiết lập HTTP Status Code
Bạn có thể chỉ định mã trạng thái HTTP bằng tham số thứ hai trong withJson()
:
return $response->withJson(['error' => 'Not Found'], 404);
Một số mã trạng thái thường dùng:
Mã | Ý nghĩa |
---|---|
200 | Thành công (OK) |
201 | Tạo mới thành công |
400 | Lỗi phía client |
404 | Không tìm thấy |
500 | Lỗi server nội bộ |
3 Cấu trúc chuẩn REST API
Phản hồi chuẩn REST thường bao gồm:
{
"success": true,
"message": "Danh sách bài viết",
"data": [
{
"id": 1,
"title": "Hello Slim",
"content": "Slim rất nhẹ"
}
]
}
Ví dụ cụ thể
Route trả về thông tin bài viết
$app->get('/api/posts/{id}', function ($request, $response, $args) {
$post = \App\Models\Post::find($args['id']);
if (!$post) {
return $response->withJson([
'success' => false,
'message' => 'Post not found'
], 404);
}
return $response->withJson([
'success' => true,
'message' => 'Post found',
'data' => $post
]);
});
Route trả về danh sách bài viết
$app->get('/api/posts', function ($request, $response) {
$posts = \App\Models\Post::all();
return $response->withJson([
'success' => true,
'message' => 'List of posts',
'data' => $posts
]);
});
Kết quả mong đợi
- Route trả về JSON đúng định dạng.
- Dữ liệu JSON bao gồm các thông tin như
success
,message
, vàdata
. - Mã trạng thái HTTP phản ánh chính xác kết quả xử lý.
Bài tập thực hành
- Tạo một route
/api/posts/{id}
trả thông tin bài viết ở định dạng JSON. - Nếu không tìm thấy bài viết, trả về JSON lỗi với mã trạng thái
404
. - Thiết kế phản hồi theo cấu trúc:
{
"success": true,
"message": "Chi tiết bài viết",
"data": { "id": 1, "title": "...", "content": "..." }
}

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com