2016-09-10 26 views
10

Tôi có một câu hỏi mà có thể âm thanh ngớ ngẩn với bạn vì vậy hãy tha thứ cho tôi.api hoặc web Laravel 5.3

Tôi không chắc khi nào tôi sử dụng tệp tuyến đường/tệp api.php.

Nếu tôi muốn xóa bản ghi từ dữ liệu có thể khai báo với ajax, tôi có cần tạo bộ điều khiển riêng và đặt tuyến trong api.php hoặc tôi có thể sử dụng cùng bộ điều khiển tôi sử dụng cho mọi thứ khác và đặt tuyến đường vào web.php?

Trả lời

11

Tôi không chắc liệu bạn có phải là tài liệu Laravel hay bạn quen thuộc với Laravel như thế nào, nhưng trong Laravel 5.3 bạn có các tuyến đường web và các tập tin được phân tách bằng các tuyến api.

Bạn chỉ sử dụng các tuyến api để đăng ký api (tức là nếu bạn đang xây dựng dịch vụ api còn lại) và tất cả các tuyến được đặt ở đây sẽ được đặt trước theo mặc định với/api. Vì vậy, ví dụ: nếu bạn xác định tuyến đường/người dùng bên trong tệp api, nó sẽ được tự động thêm tiền tố/api, vì vậy điểm cuối của bạn sẽ là www.yourapplication.com/api/user.

Nếu bạn không xây dựng dịch vụ api còn lại hoặc bất kỳ thứ gì tương tự không sử dụng tệp này, hãy sử dụng tệp web để xác định tất cả các tuyến ứng dụng của bạn.

Cũng nên xem xét truy cập trang web của Laracast, vì chúng có phần giới thiệu tốt về những thay đổi mới trong Laravel 5.3 bao gồm các tuyến web và api. Hy vọng điều này sẽ giúp bạn.

5

Tất cả các tuyến đường được đặt trong api.php sẽ được tiền tố/api, cũng được bernadd đề cập, có những khác biệt khác: trong liên kết này (https://mattstauffer.co/blog/routing-changes-in-laravel-5-3), bạn có thể tìm thấy sự khác biệt giữa api và web trong mã laravel :

trong App \ Providers \ RouteServiceProvider:

public function map() 
    { 
     $this->mapApiRoutes(); 

     $this->mapWebRoutes(); 

     // 
    } 

    protected function mapApiRoutes() 
    { 
     Route::group([ 
      'middleware' => ['api', 'auth:api'], 
      'namespace' => $this->namespace, 
      'prefix' => 'api', 
     ], function ($router) { 
      require base_path('routes/api.php'); 
     }); 
    } 

    protected function mapWebRoutes() 
    { 
     Route::group([ 
      'namespace' => $this->namespace, 'middleware' => 'web', 
     ], function ($router) { 
      require base_path('routes/web.php'); 
     }); 
    } 

trong App \ Http \ Kernel.php trong "bảo vệ $ middlewareGroups" bạn có thể thấy điều này:

'web' => [ 
      \App\Http\Middleware\EncryptCookies::class, 
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
      \Illuminate\Session\Middleware\StartSession::class, 
      \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
      \App\Http\Middleware\VerifyCsrfToken::class, 
      \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     ], 

    'api' => [ 
      'throttle:60,1', 
      'bindings', 
     ], 

Và: trong config \ auth.php: Trong của tập tin này Ý kiến ​​bạn rõ ràng có thể tìm ra sự khác biệt giữa mặc định "auth" ('bảo vệ' => 'web') vs "auth: api"

Các vấn đề liên quan