Laravel 02: Routes và Views

Sau khi cài đặt và tạo xong một Laravel project, bạn hãy mở tập tin routes/web.php. Ở tập tin này, bạn sẽ thấy một đoạn rất quan trọng như sau:

Đoạn này định nghĩa, nếu như khi nhận được một GET request đến route ‘/’ (tức root), thì Laravel sẽ render nội dung từ tập tin resources/views/welcome.blade.php. Nếu bạn đã có kinh nghiệm với NodeJS + Express + Template engine như EJS hoặc HBS, bạn sẽ không cảm thấy xa lạ. Mọi thứ đều rất tương tự. Để tiến hành serve project trên localhost:8000, bạn chỉ cần đơn giản gõ câu lệnh bên dưới là được.

Bây giờ, chúng ta sẽ tiến hành tạo thêm một route mới là ‘/hello’ và nhận GET request, và sẽ trả về một view có tên là ‘hello’. Bạn chỉ việc tạo một tập tin hello.blade.php trong resources/view, với nội dung tùy ý bạn. Ở đây, tôi chỉ đơn giản là tạo một HTML template với một thẻ <h1> có nội dung rất “kinh điển” là “Hello World”.

Tiếp theo, quay lại routes/web.php, bạn có thể dễ dàng định nghĩa route mới này theo cách mà họ đã định nghĩa sẵn cho chúng ta. Bạn hãy tự khởi tạo trước khi đọc đáp án bên dưới.

Với cách làm tương tự, bạn có thể định nghĩa các routes khác không chỉ với GET, mà còn là POST, UPDATE và DELETE nữa. Thật dễ dàng phải không. Nhưng một câu hỏi đặt ra, là nếu như chúng ta không muốn trả về một view, chúng ta muốn trả về một JSON để thiết kế API thì sao? Rất đơn giản, thay vì bạn return một hàm view, bạn chỉ cần return một String là được. Bây giờ, bạn tạo một route ‘/api’ như bên dưới và cho chạy thử:

Kết quả là chúng ta sẽ nhận được một String ‘123’ khi trỏ tới route trên. Bây giờ, chúng ta sẽ tiếp tục nâng độ khó lên, bằng cách trả về String từ request. Lẽ dĩ nhiên, trong đại đa số các trường hợp server app, chúng ta sẽ cho client gửi kèm data theo request và server sẽ parse và xử lí các data đó để trả về response. Yêu cầu của bài tập là bạn sẽ respond đúng đoạn String được gửi lên request. Tức là khi request đến ‘/api?string=my_string’, server sẽ respond về đúng là ‘my_string’. Vậy, ta làm cách nào?

Chúng ta có thể đọc được các request parameters thông qua hàm request($query_param). Chẳng hạn, theo ví dụ này, chúng ta có query_param là ‘string’. Cách làm rất đơn giản như đang giỡn:

Bạn cho tiến hành chạy thử, chẳng hạn, bạn request đến ‘/api?string=my_string’, và kết quả chúng ta nhận được đúng chính xác là ‘my_string’. Chỉ cần ba nốt nhạc là xong.

Tuy nhiên, cái chúng ta cần là một JSON thay vì chỉ là một String thuần. Và điều này chỉ cần kiến thức PHP thuần túy là đủ. Bạn đã nghĩ ra được cách làm chưa? Tôi đang nói đến một hàm khá quen thuộc, và đó, không nào khác, là json_encode. Tiến hành điều chỉnh giá trị return của route như sau:

Bạn chỉ việc cho chạy thử. Và xong rồi, chúng ta đã có một route trả về JSON. Quá đơn giản đúng không? Bài tập của bạn là trong request sẽ chứa những tham số a,b,c,d, e, và response trả về sẽ bao gồm đúng các tham số đó. Trong trường hợp, nếu vắng mặt một tham số nào, thì response sẽ đi kèm với những tham số mặc định bên trên. Bạn vui lòng tự code trước khi đọc tiếp.

Trước khi chia tay, tôi xin gửi bạn luôn đáp án. Xin chào và hẹn gặp lại các bạn trong bài học kế tiếp.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.