Sử dụng tham số đường dẫn khi tạo Restful url

Sharing is caring!

Ở bài trước, tui đã làm một cái RESTful endpoint cho các bạn xem thấy cũng ngon ăn ha, dễ òm. Nhưng cuộc đời nó không có đơn giản như vậy và RESTful cũng thế. Trong bài hôm nay, tui sẽ nói về cách sử dụng tham số đường dẫn (path parameter) trong url endpoint.

1. Tham số đường dẫn:

Với một url endpoint, nếu đi với các HTTP verb khác nhau, chúng ta sẽ có những endpoint khác nhau. Do đó, nếu cùng một url endpoint, cùng 1 HTTP verb, nếu số lượng tham số đường dẫn khác nhau cũng sẽ tạo ra các endpoint khác nhau.

Nhìn cái hình trên chắc cũng rõ ràng hơn rồi ha. Đó là cách chúng ta truyền tham số từ phía Client, vậy bên Server chúng ta phải định nghĩa như thế nào để nhận các tham số đó.

Với Url đầu tiên, ta viết như thế này:

{name} là biến parameter của url endpoint, tương ứng với giá trị “peter”, tới chổ này, chúng ta chỉ mới làm cái chổ để nhận giá trị là “peter” thôi. Tiếp theo, chúng ta phải đưa được cái giá trị này vào trong cái hàm callback để xử lý. Trong hàm callback, chúng ta phải khai báo một biến parameter của hàm là $name, biến này là biến của PHP nha và tên biến nên giống tên biến trên cái url để dễ nhớ (các bạn có thể đặt tên biến của hàm callback là $name1, $your_name…, không nhất thiết phải giống nha, nhưng tui khuyên là nên giống, hehe). Túm lại là:

Thử thôi, mở file routes/api.php ra và viết cái đoạn code trên:

Mở Postman lên và gõ cái url: http://localhost:9000/api/hello/peter, kết quả là:

Các bạn có thể thử đổi tên biến $name thành $your_name, rồi thử coi sao nhé.

2. Thứ tự của các tham số đường dẫn trong url:

OK, coi như các bạn đã thử và chạy ngon. Ta xem tiếp cái url thứ 2:

Trên url ta có 2 parameters, thì bên dưới hàm callback cũng phải có 2 cái parameters tương ứng (tên biến thì đã nói như ở trên ha). Viết thử coi sao:

lại Postman:

Oh, quá ngon, chạy mượt. Nhưng giờ các bạn thử đổi thứ tự biến parameter của hàm callback xem sao từ $name, $age thành $age, $name, tên biến thì giữ nguyên y chang:

Postman again:

Ngạc nhiên chưa, giá trị của biến $age = {name} = peter và biến $name = {age} = 25. Tại sao lại bị vậy, lý do? Đó là do thứ tự các biến trên url và trong hàm callback không giống nhau. Vậy từ chổ này, các bạn nhớ cho tui là:

Khi sử dụng tham số đường dẫn, nếu có từ 2 tham số (parameter) trở lên: tên biến có thể giống/khác nhau, nhưng thứ tự các biến tham số phải giống nhau trên cả url và hàm callback

3. Tham số tùy chọn:

Giả sử tui có cái url endpoint như sau: http://localhost:9000/api/age-permission/{age}, nếu như từ 18 tuổi trở lên thì truyền age vào, còn nếu nhỏ hơn 18 tuổi thì không cần truyền:

Từ 18 ==> http://localhost:9000/api/age-permission/20

Dưới 18 ==> http://localhost:9000/api/age-permission

Khí đó các bạn sẽ cho biến {age} thành {age?} là một biến option và giá trị default của biến $age trong hàm callback là 17, viết như sau:

Nếu có từ 2 tham số trở lên, các tham số tùy chọn (option parameter) thường để ở phía sau cùng

Thử viết xem sao:

Still Postman:

 

Xong, các bạn từ từ khám phá nha. Hẹn gặp lại!

Sharing is caring!

Restful là gì? Tạo restful api với Laravel 5
Sử dụng JSON để truyền nhận dữ liệu trong Restful

Vincent Le

Tui là Lê Minh Đạt, tên tiếng anh là Vincent(do thích nhân vật Vincent Valentine, ai từng là fan của trò Final Fantasy VII thì sẽ biết nhân vật này, hehe). Đang tập tành làm một blogger viết về mảng lập trình, mong muốn được chia sẻ những gì đã học được, tích góp được trong 10 năm đi làm thợ code.

shares