有时候在同一个工程里需要同时开发多个客户端接口的项目,例如移动端APP和web前端。
    由于用户认证规则,签名校验等规则会不一样,这时候可以使用注册多个模块,每个模块单独的路由文件
    示例如下
    image.png
    FooRouteServiceProvider

    1. <?php
    2. namespace App\Modules\Foo;
    3. use App\Modules\Foo\Middleware\FooMiddleware;
    4. use Illuminate\Support\Facades\Route;
    5. use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
    6. class FooRouteServiceProvider extends ServiceProvider
    7. {
    8. /**
    9. * This namespace is applied to your controller routes.
    10. *
    11. * In addition, it is set as the URL generator's root namespace.
    12. *
    13. * @var string
    14. */
    15. protected $namespace = 'App\Modules\Foo\Controller';
    16. /**
    17. * Define your route model bindings, pattern filters, etc.
    18. *
    19. * @return void
    20. */
    21. public function boot()
    22. {
    23. //
    24. parent::boot();
    25. }
    26. /**
    27. * Define the routes for the application.
    28. *
    29. * @return void
    30. */
    31. public function map()
    32. {
    33. $this->mapRoutes();
    34. }
    35. protected function mapRoutes()
    36. {
    37. Route::prefix('foo')
    38. ->middleware([
    39. FooMiddleware::class,
    40. ])
    41. ->namespace($this->namespace)
    42. ->group(base_path('app/Modules/Foo/route.php'));
    43. }
    44. }

    FooServiceProvider

    1. <?php
    2. namespace App\Modules\Foo;
    3. class FooServiceProvider extends \Illuminate\Support\ServiceProvider
    4. {
    5. /**
    6. * Bootstrap any application services.
    7. *
    8. * @return void
    9. */
    10. public function boot()
    11. {
    12. }
    13. /**
    14. * Register any application services.
    15. *
    16. * @return void
    17. */
    18. public function register()
    19. {
    20. //注册路由
    21. $this->app->register(FooRouteServiceProvider::class);
    22. }
    23. }

    config/app.php中注册模块

    1. //foo模块
    2. App\Modules\Foo\FooServiceProvider::class,