Asked Nov 10th, 2017 3:31 AM 2192 0 2
  • 2192 0 2
0

Dùng API Route trong Laravel như thế nào?

Share
  • 2192 0 2

Mình vẫn chưa hiểu API Route trong Laravel dùng như thế nào. Có bạn nào có thể giúp đỡ cho mình vụ này không?

2 ANSWERS


Answered Nov 13th, 2017 8:09 AM
Accepted
+6

Nếu bạn check class RouteServiceProvider - https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php#L66 thì mặc định các API route sẽ có prefixapi và sử dụng middleware group là api. Middleware group này thực hiện một số việc như: Rate LimitRoute Model Bindings (tương tự như câu trả lời của anh kopitop đã đề cập).

Tiếp theo bạn cần check configuration hiện tại trong config/auth.php - https://github.com/laravel/laravel/blob/master/config/auth.php#L44

Driver mặc định là token tức là sử dụng TokenGuard - https://github.com/laravel/framework/blob/5.5/src/Illuminate/Auth/TokenGuard.php. Driver này yêu cầu bạn phải có trường api_token trong request (có thể qua query string hoặc request data). Bạn có thể đọc source code của class trên để hiểu hơn.

Nếu bạn muốn sử dụng OAuth2 để authorize các API request thì có thể sử dụng Laravel Passport, lúc này driver sẽ là passport thay vì token.

P/S: với các request bình thường yêu cầu có session thì bạn có thể tham khảo: https://github.com/laravel/framework/blob/5.5/src/Illuminate/Auth/SessionGuard.php để so sánh

Share
Answered Nov 10th, 2017 3:51 PM
+4

API Route trong Laravel không khác gì so với route thường ngoại trừ 2 đặc điểm chính:

  • Được đặt bên trong 1 namespace/prefix api (eg: your-host.dev/api/your-resources)
  • Được cài đặt mặc định api middleware, các middleware api cụ thể là gì bạn có thể xem trong file Kernel.php ( ví dụ: throttle : giới hạn số request trong 1 phút, cors: phòng tránh cross-site access, ...)
Share
Phạm Huy @phhuy38
Nov 11th, 2017 3:05 PM

Không phải đâu, nó sẽ báo lỗi ngay vì thiếu auth token.

0
| Reply
Share
Nov 29th, 2017 7:59 AM

Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });

  • Mặc định, laravel sử dụng basic token. Middleware auth:api sẽ kiểm tra có api_token không và api_token này có tồn tại trong CSDL không? (thường là bảng users - Tùy cấu hình). Nếu có thì cho phép truy cập, còn không sẽ là lỗi Unauthorized - 401.
  • Vì khai báo middleware "auth:api" nên framework mới check có auth token không, với những route mà không cần xác thực thì bỏ đi, có thể vào bình thường như một guest.
0
| Reply
Share