繁体   English   中英

仅将Laravel / Dingo用于API

[英]Using Laravel/Dingo for an API only

我们有一个大规模的PHP应用程序,它基本上是从头开始在我们自己的框架中编写的。 现在,对于移动开发,我们需要创建一个API,但是问题是是否仅使用rest api包,或者需要更强大的功能。 从头开始编写自己的rest api不再是一种选择。

我研究了包括Slim框架的选项。 这将很容易实现,但是我认为它缺乏良好的结构。

我看过的另一个选择是Dingo ,它是基于Laravel构建的。 一个很大的优点是它已经具有庞大的结构和大量可使用的工具。

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

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

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

我敢肯定,这就是为什么泰勒·奥特威尔(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中加载的内容和未加载的内容。

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

通常,除非您的API的流量很高,否则使用哪种框架都没有关系,应该使用最适合的框架。 瓶颈通常与数据库使用有关。您应该使用探查器以确保解决实际的性能问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM