2017-07-04 51 views
1

我正在为2客户端应用程序,移动应用程序和angular2管理面板提供API。Laravel api的多个路径文件

如果我在一个默认的routes/api.php中编写两个应用程序的路由,这将是非常巨大的。

所以,我要拆分的API路线文件:

  1. routes/admin.api.php的角度应用

  2. routes/app.api.php移动应用

我已经修改了RouteServiceProvide如下

<?php 

namespace App\Providers; 

use Illuminate\Support\Facades\Route; 
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 

class RouteServiceProvider extends ServiceProvider 
{ 
    protected $namespace = 'App\Http\Controllers'; 

    public function boot() 
    { 
     // 

     parent::boot(); 
    } 

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

     $this->mapApiRoutes(); 

     $this->mapWebRoutes(); 

     // 
    } 

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

    protected function mapApiRoutes() 
    { 
     Route::prefix('api/v1') 
      ->middleware('api') 
      ->namespace($this->namespace) 
      ->group(base_path('routes/api.php')); 
    } 

    protected function mapAdminApiRoutes() 
    { 
     Route::prefix('api/v1') 
      ->middleware('api') 
      ->namespace($this->namespace) 
      ->group(base_path('routes/admin.api.php')); 
    } 
} 

我收到以下错误

(1/1) FatalErrorException 
Illuminate\Routing\Router::loadRoutes(): Failed opening required 'D:\Workspace\Project Izzmart\izzmart\routes/api.php' (include_path='.;C:\php\pear') 
in Router.php (line 329) 
+0

我不知道,但我有佛对RouteServiceProvider中'api.php'路由的引用,尝试将其添加到现有require的下方 –

+0

[多路由文件可能位于laravel 5中的一个主路径文件的位置](https://stackoverflow.com/问题/ 34182806 /多路由文件是一个主路由文件在laravel-5) – linktoahref

+0

检查路径文件的存储路径! – linktoahref

回答

1
  1. 创建两个途径文件admin.api.php和app.api.php。

  2. 编辑RouteServiceProvider.php文件到如下:

<?php 
 

 
namespace App\Providers; 
 

 
use Illuminate\Support\Facades\Route; 
 

 

 
class RouteServiceProvider extends ServiceProvider 
 
{ 
 
    protected $namespace = 'App\Http\Controllers'; 
 
    protected $apiNamespace = 'App\Http\Controllers\Api\v1'; 
 

 
    public function boot() 
 
    { 
 

 
     parent::boot(); 
 
    } 
 

 
    public function map(Router $router) { 
 
     $router->group(['namespace' => $this->namespace], function ($router) { 
 
      require app_path('Http/routes/web.php'); 
 
     }); 
 
     $router->group(['namespace' => $this->apiNamespace], function ($router) { 
 
      require app_path('Http/api.php'); 
 
     }); 
 
     $router->group(['namespace' => $this->apiNamespace], function ($router) { 
 
      require app_path('Http/amin.api.php'); 
 
     }); 
 
    } 
 

 
}

有关更多详情,请here

http://laravel-tricks.com/tricks/laravel-5-multiple-routes-files

+0

感谢您的时间真的很感激它,我已更新我的文章,请问我可以告诉我什么我失踪 –

+0

我已经更新了答案,试试这个 –