Php 使用laravel构建调用API项目
我想构建一个调用Php 使用laravel构建调用API项目,php,laravel,api,routes,Php,Laravel,Api,Routes,我想构建一个调用APIlaravel项目,将前端和后端分开,但是如何实现呢 所有的API都在routes/API.php中编写,但是返回视图的作业仍然在routes/web.php中, 这正常吗?如果没有,我该怎么办? 代码就像 routes/web.php: Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;}); ... $(function(){ $.ajax{
API
laravel项目,将前端和后端分开,但是如何实现呢所有的
API
都在routes/API.php
中编写,但是返回视图的作业仍然在routes/web.php
中,
这正常吗?如果没有,我该怎么办?代码就像 routes/web.php:
Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});
...
$(function(){
$.ajax{
url: 'api/book/{{ $id }}',
....
}
});
...
//return the book data that id = {id}
Route::get('/book/{id}','BookController@show');
show.blade.php:
Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});
...
$(function(){
$.ajax{
url: 'api/book/{{ $id }}',
....
}
});
...
//return the book data that id = {id}
Route::get('/book/{id}','BookController@show');
routes/api.php:
Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});
...
$(function(){
$.ajax{
url: 'api/book/{{ $id }}',
....
}
});
...
//return the book data that id = {id}
Route::get('/book/{id}','BookController@show');
你正确地使用了它 分离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',
],
];
正如@angad dubey所提到的,将它们分开是一种很好的做法,这样web就可以处理前端和api路由了。。。Api调用
我倾向于通过在routes文件夹中添加一个admin.php来进一步分离我的路由,这样我的后端路由也会被分离,这样你就不会有一个文件有一长串的路由要搜索,这样你就可以将不同的中间件附加到它们上,而不是附加到其他文件上,这可能会导致长期问题我建议您使用流明,因为您正在构建API。看看他们想要的是前端和后端。对于这种情况,Lumen是一个糟糕的解决方案。如果您正在构建一个API,则假定您将使用前端框架进行fronted。因此不需要整个拉威尔。