post-image

HTTP Response thiết lập thông tin trả về trong Laravel

Tổng quan
Mô hình Request và Response khi người dùng yêu cầu tải một trang web

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 RouteLaravel 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'; });
Code language: PHP (php)

trả về một chuỗi “Hello World” khi truy cập http://laravel.dev/basic-response-string.

Ví dụ trả về một chuỗi khi sử dụng Response trong Laravel
Route::get('/basic-response-json', function () { $info = ['name' => 'All Laravel', 'version' => 'Laravel 5.4', 'website' => 'http://allaravel.com']; return $info; });
Code language: PHP (php)

Khi trả về một mảng Laravel sẽ tự động chuyển đổi sang Json response.

Ví dụ trả về một mảng khi sử dụng Response trong Laravel

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); });
Code language: PHP (php)

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');
Code language: PHP (php)

Gán một cookie vào Response

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);
Code language: PHP (php)

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);
Code language: PHP (php)

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');
Code language: JavaScript (javascript)

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' ]);
Code language: PHP (php)

Cảm ơn các bạn đã đọc.

Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Nguồn tham khảo: allaravel

Leave a Reply

Your email address will not be published. Required fields are marked *