Mỗi request từ trình duyệt khi gửi lên máy chủ web xử lý xong sẽ trả về một response cho trình duyệt để hiển thị các nội dung cho người dùng. Framework Laravel cung cấp rất nhiều cách thức để trả về các response, các response có thể được trả về tại các route hoặc tại các phương thức của Controller (Xem thêm Laravel Route, Laravel Controller).
Response cơ bản
Các response cơ bản đơn giản nhất là trả về ngay tại các route ở dạng chuỗi hoặc mảng, ví dụ:
Route::get('/basic-response-string', function () {
return 'Hello World';
});
trả về một chuỗi “Hello World” khi truy cập http://laravel.dev/basic-response-string.
Route::get('/basic-response-json', function () {
$info = ['name' => 'All Laravel', 'version' => 'Laravel 5.4', 'website' => 'http://allaravel.com'];
return $info;
})
Khi trả về một mảng Laravel sẽ tự động chuyển đổi sang Json response.
Gán thông tin Header vào Response
Thông thường chúng ta sẽ trả về một instance của Illuminate\Http\Response hoặc view, khi trả về instance Response bạn có thể điều chỉnh được các thông tin như mã trạng thái trả về hoặc cả response header.
Route::get('home', function () {
return response('Hello World', 200);
});
Các response khi trả về máy chủ web đều có phần header chứa một số các thông tin để trình duyệt có thể sử dụng trong quá trình tạo nội dung hiển thị cho người dùng. Các thông tin header này Laravel cho phép thay đổi, gán thêm trước khi gửi đến trình duyệt. Phương thức header() được sử dụng để thêm các thông tin header trước khi gửi response:
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
Phương thức cookie của Response cho phép gán một giá trị cookie vào response trả về trình duyệt.
return response($content)
->header('Content-Type', $type)
->cookie('name', 'value', $minutes);
Xem thêm bài Laravel Cookie cùng các ví dụ thực tế về sử dụng cookie trong form liên hệ để hiểu cách ứng dụng Laravel Cookie trong những tình huống cụ thể
Gán một view cho Response
Nếu bạn cần trả về một view với các thông tin header và mã trạng thái có thể sử dụng cú pháp
return response()
->view('fontend.contact', $data, 200)
->header('Content-Type', $type);
Phương thức helper global view() chính là cách viết rút gọn của response()->view(), sử dụng view() khi bạn chỉ cần trả về view mà không muốn truyền một giá trị riêng về mã trạng thái hoặc thông tin response header.
return view('fontend.contact');
Trả về Response dạng Json
Phương thức json() sẽ tự động thiết lập Content-Type header thành ‘application/json’ nó tương tự như phương thức json_encode của PHP.
return response()->json([
'name' => 'All Laravel',
'version' => 'Laravel 5.4',
'website' => 'http://allaravel.com'
]);