api或web Laravel 5.3

Sig*_*avi 17 laravel-5 laravel-5.3

我有一个问题对你来说可能听起来很傻,所以请原谅我.

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

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

ber*_*add 18

我不确定您是否阅读过Laravel文档或者您对Laravel有多熟悉,但在Laravel 5.3中,您在单独的文件中有Web路由和api路由.

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

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

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


Ami*_*n72 5

放在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');
        });
    }
Run Code Online (Sandbox Code Playgroud)

在"受保护的$ 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',
        ],
Run Code Online (Sandbox Code Playgroud)

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