1

我们有一个大型 PHP 应用程序,它基本上是用我们自己的框架从头开始编写的。现在对于移动开发,我们需要创建一个 API,但问题是是只使用一个 rest api 包,还是使用更强大的东西。从头开始编写自己的 rest api 不再是一种选择。

我已经查看了包含Slim 框架的选项。这将很容易实现,但在我看来它缺乏良好的结构。

我看过的另一个选择是Dingo,它建立在 Laravel 之上。一个很大的优势是它已经拥有庞大的结构和大量的工具可以使用。

这里的问题是,Laravel 是否会因为仅用于 API 而开销太大,而我们自己的框架也在同一台服务器上运行。请注意,我们必须包含我们自己框架的很大一部分,以保持事情顺利进行。所有模型和列表都来自我们自己的框架。

我不知道 Laravel 是否会在进入 API 部分之前加载很多不必要的项目,或者这是否会像 Slim 框架那样是轻量级的。

4

2 回答 2

2

我不知道 Laravel 是否会在进入 API 部分之前加载很多不必要的项目,或者这是否会像 Slim 框架那样是轻量级的。

我很确定这就是为什么 Taylor Otwell(Laravel 的创建者)让Lumen去检查它,看看它是否适合你。

如果您决定使用 Laravel,从 5.2 开始,您可以通过指定哪个中间件,将您的路由文件中的 API 端点与通常在您对网页的通常调用中加载的组件(例如会话、缓存等)分开应该使用。

如果您查看路由文件,例如:

Route::group(['middleware' => ['web']], function () {
    //
});

然后看看中间件组Http\Kernel.php

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,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

您可以看到它已经在一定程度上为您设置了不加载任何不必要的东西。因此,管理您的路由和中间件,您可以很好地控制 API 中加载的内容和未加载的内容。

于 2016-03-18T09:14:25.590 回答
0

所有框架都在构建的便利性与性能之间进行权衡。

一般来说,除非您的 API 流量很大,否则您使用哪个框架都没有关系,您应该使用您最熟悉的框架。瓶颈通常与数据库使用有关,您应该使用分析器来确保解决实际的性能问题。

于 2016-03-18T09:12:39.213 回答