【问题标题】:Building a call API project with laravel使用 laravel 构建调用 API 项目
【发布时间】:2017-06-11 04:50:45
【问题描述】:

我想建一个调用APIlaravel 的项目,前后端分离,但是怎么做呢?
所有的API都写在routes/api.php,但是返回视图的工作还在routes/web.php, 这正常吗?如果没有,我该怎么办?
类似的代码...

routes/web.php:

Route::get('/book/{id}',function(){ return view('book.show')->with('id',$id) ;});

show.blade.php:

...
$(function(){
    $.ajax{
        url: 'api/book/{{ $id }}',
        ....
    }
});
...

routes/api.php:

//return the book data that id = {id}    
Route::get('/book/{id}','BookController@show'); 

【问题讨论】:

  • 我建议您使用 Lumen,因为您正在构建 API。看看this
  • 他们需要前端和后端。对于这种情况,Lumen 是一个糟糕的解决方案。
  • 如果您正在构建 API,则假定您将使用前端框架进行前端。因此不需要整个 Laravel。

标签: php laravel api routes


【解决方案1】:

正如@angad-dubey 提到的将它们分开的良好做法,以便网络处理前端和用于... Api 调用的 api 路由。

我倾向于通过在 routes 文件夹中添加一个 admin.php 来进一步分离我的路线,这样我的后端路线也被分离了,因此您没有一个文件包含一长串要搜索的路线,并且这种方式如上所示,您可以将不同的中间件附加到它们而不是其他中间件,这可能会导致长期问题

【讨论】:

    【解决方案2】:

    你用对了。

    分离 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',
        ],
    ];
    

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2017-10-30
      • 2013-07-22
      • 2019-03-15
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多