Request và Response

Trong Laravel, Request và Response là hai thành phần quan trọng trong xử lý các yêu cầu và phản hồi của ứng dụng web.

Request là đối tượng đại diện cho yêu cầu từ người dùng gửi đến server. Nó chứa thông tin về các thông số như URL, tham số truy vấn, phương thức HTTP (GET, POST, PUT, DELETE, v.v.), các thông tin được gửi trong body của yêu cầu (nếu có), và nhiều hơn nữa. Để truy cập vào Request trong Laravel, chúng ta có thể sử dụng Dependency Injection (DI), như sau:

use Illuminate\Http\Request;

public function myMethod(Request $request)
{
    // Xử lý yêu cầu
}

Trong ví dụ trên, $request là một đối tượng của lớp Illuminate\Http\Request. Chúng ta có thể sử dụng các phương thức của đối tượng này để truy cập vào các thông tin trong yêu cầu.

Response là đối tượng đại diện cho phản hồi từ server gửi về cho người dùng. Nó chứa thông tin về mã HTTP (200, 404, 500, v.v.), các header của phản hồi, và nội dung của phản hồi (thường là HTML, JSON, XML, v.v.). Để trả về một Response trong Laravel, chúng ta có thể sử dụng các phương thức của đối tượng Response, như sau:

use Illuminate\Http\Response;

public function myMethod()
{
    $content = '<h1>Hello, world!</h1>';

    return new Response($content, 200, [
        'Content-Type' => 'text/html',
    ]);
}

Trong ví dụ trên, chúng ta tạo một đối tượng Response mới với nội dung là một chuỗi HTML ($content), mã HTTP là 200, và header của phản hồi được chỉ định bằng một mảng key-value.

Tuy nhiên, trong thực tế, chúng ta thường sử dụng các phương thức khác nhau của Response để trả về các định dạng phổ biến như JSON, file, redirect, v.v. Ví dụ:

use Illuminate\Http\Response;

public function myMethod()
{
    // Trả về một chuỗi JSON
    return response()->json(['name' => 'John Doe', 'email' => '[email protected]']);

    // Trả về một file
    return response()->download($pathToFile);

    // Chuyển hướng đến một URL khác
    return redirect('https://laravel.com');
}

Trong ví dụ trên, chúng ta sử dụng các phương thức của đối tượng Response để trả về một chuỗi JSON, một file, hoặc chuyển hướng đến một URL khác.