Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel构建调用API项目_Php_Laravel_Api_Routes - Fatal编程技术网

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。因此不需要整个拉威尔。