【问题标题】:api or web Laravel 5.3api 或 web Laravel 5.3
【发布时间】:2017-01-18 09:04:10
【问题描述】:

我有一个对你来说可能听起来很愚蠢的问题,所以请原谅我。

我不确定何时使用 routes/api.php 文件。

如果我想使用 ajax 从数据表中删除记录,我是否需要创建一个单独的控制器并将路由放在 api.php 中,或者我可以使用与其他所有内容相同的控制器并将路由放在 web 中.php?

【问题讨论】:

    标签: laravel-5 laravel-5.3


    【解决方案1】:

    我不确定您是否阅读过 Laravel 文档或您对 Laravel 的熟悉程度,但在 Laravel 5.3 中,您在单独的文件中拥有 web 路由和 api 路由。

    您使用 api 路由仅用于注册您的 api(即,如果您正在构建一个 rest api 服务),并且放置在那里的所有路由将默认以 /api 为前缀。因此,即如果您在 api 文件中定义路由 /user,它将自动以 /api 为前缀,因此您的终点将是 www.yourapplication.com/api/user。

    如果您没有构建 rest api 服务或任何类似的东西,则根本不要使用此文件,请使用 web 文件来定义所有应用程序路由。

    还可以考虑访问 Laracast 网站,因为他们很好地介绍了 Laravel 5.3 的新变化,包括 web 和 api 路由。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      所有放在 api.php 中的路由都会以 /api 为前缀,bernadd 也提到过,还有其他区别: 在这个链接(https://mattstauffer.co/blog/routing-changes-in-laravel-5-3)你可以找到laravel代码中api和web的区别:

      在 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');
              });
          }
      

      在“受保护的 $middlewareGroups”中的 App\Http\Kernel.php 中,您可以看到:

       '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',
              ],
      

      并且: 在 config\auth.php 中:在这个文件的注释中,您可以清楚地找出默认 "auth"('guard' => 'web') 与 "auth:api" 之间的区别

      【讨论】:

        猜你喜欢
        • 2017-01-26
        • 2017-06-06
        • 2017-02-28
        • 2017-01-27
        • 2018-07-20
        • 2017-09-06
        • 1970-01-01
        • 2017-01-19
        • 2017-01-22
        相关资源
        最近更新 更多