Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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/Dingo用于API_Php_Rest_Laravel_Slim_Dingo Api - Fatal编程技术网

Php 仅将Laravel/Dingo用于API

Php 仅将Laravel/Dingo用于API,php,rest,laravel,slim,dingo-api,Php,Rest,Laravel,Slim,Dingo Api,我们有一个大规模的PHP应用程序,它基本上是在我们自己的框架中从头开始编写的。现在,对于移动开发,我们需要创建一个API,但问题是是否只使用RESTAPI包,还是使用更强大的API包。从头编写自己的RESTAPI不再是一种选择 我已经考虑了包含该选项的选项。这将很容易实现,但我认为它缺乏良好的结构 我考虑过的另一个选择是,它构建在Laravel之上。一个巨大的优势是它已经有了庞大的结构和大量的工具可供使用 这里的问题是,当我们在同一台服务器上运行自己的框架时,Laravel仅仅用于API是否会有

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

我已经考虑了包含该选项的选项。这将很容易实现,但我认为它缺乏良好的结构

我考虑过的另一个选择是,它构建在Laravel之上。一个巨大的优势是它已经有了庞大的结构和大量的工具可供使用

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


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

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

一般来说,除非您的API是高流量的,否则使用哪个框架并不重要,您应该使用您最熟悉的框架。瓶颈通常围绕着数据库的使用,您应该使用探查器来确保解决实际的性能问题

我不知道拉威尔以前是否会装很多不必要的东西 进入API部分,或者这是否会像 Slim框架将是

我很确定这就是为什么Taylor Otwell(Laravel的创造者)让你去看看它是否适合你

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

如果查看routes文件,例如:

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中加载的内容和未加载的内容。

谢谢您的回答,我确实查看了Lumen,我认为这将是该项目的发展方向。@SaifBechan-不客气,很高兴我能帮上忙。请记住,如果将来需要,您可以将Lumen项目升级为完整的Laravel应用程序。快乐编码!