我想建立一个呼叫API
laravel项目,将前端和后端分开,但是如何?
所有API
都在routes/api.php
中写入,但返回视图的作业仍然存在于routes/web.php
中,
那是正常的吗?如果没有,我该怎么办?
代码如......
路由/ web.php:
Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});
show.blade.php:
...
$(function(){
$.ajax{
url: 'api/book/{{ $id }}',
....
}
});
...
路由/ api.php:
//return the book data that id = {id}
Route::get('/book/{id}','BookController@show');
答案 0 :(得分:1)
您正确使用它。
分离web和api路由的一个好处是,您可以更精细地控制应用中间件。
看一下app / Kernel.php文件:
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'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,
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
答案 1 :(得分:0)
正如@ angad-dubey提到的将它们分开的好习惯,以便网络处理前端和api路线... Api电话。
我倾向于通过在routes文件夹中添加一个admin.php来进一步分离我的,这样我的后端路由也是分开的,因此你不会有一个文件包含一长串要搜索的路由,并且如上所示,您可以将不同的中间件附加到它们而不是其他中间件,这可能会导致长期问题