Yêu cầu thg 11 10, 2017 3:31 SA 2764 0 2
  • 2764 0 2
0

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

Chia sẻ
  • 2764 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 CÂU TRẢ LỜI


Đã trả lời thg 11 13, 2017 8:09 SA
Đã được chấp nhận
+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

Chia sẻ
Đã trả lời thg 11 10, 2017 3:51 CH
+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, ...)
Chia sẻ
Avatar Phạm Huy @phhuy38
thg 11 11, 2017 3:05 CH

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

thg 11 29, 2017 7:59 SA

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.
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí