【发布时间】:2017-01-18 09:04:10
【问题描述】:
我有一个对你来说可能听起来很愚蠢的问题,所以请原谅我。
我不确定何时使用 routes/api.php 文件。
如果我想使用 ajax 从数据表中删除记录,我是否需要创建一个单独的控制器并将路由放在 api.php 中,或者我可以使用与其他所有内容相同的控制器并将路由放在 web 中.php?
【问题讨论】:
标签: laravel-5 laravel-5.3
我有一个对你来说可能听起来很愚蠢的问题,所以请原谅我。
我不确定何时使用 routes/api.php 文件。
如果我想使用 ajax 从数据表中删除记录,我是否需要创建一个单独的控制器并将路由放在 api.php 中,或者我可以使用与其他所有内容相同的控制器并将路由放在 web 中.php?
【问题讨论】:
标签: laravel-5 laravel-5.3
我不确定您是否阅读过 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 路由。希望对您有所帮助。
【讨论】:
所有放在 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" 之间的区别
【讨论】: