Web应用程序和API在同一个Laravel项目中?

Web应用程序和API在同一个Laravel项目中?,api,codeigniter,web-applications,laravel-4,Api,Codeigniter,Web Applications,Laravel 4,我正试图找出最好的方法来组织一个我即将开始的新项目 我们目前有一个web应用程序和一个移动应用程序,它们都由API提供数据。目前,web应用程序是在CodeIgniter的安装上完成的,API是在CodeIgniter的单独安装上完成的。对于数据,web应用程序调用API,然后处理返回的数据 在这一点上,看起来我们正在为web应用程序切换到Laravel,我认为这可能是一个重新制作API的好机会,因为我们的一些规则已经改变,现在可能是完全摆脱CodeIgniter的时候了 现在来看问题:我已经阅

我正试图找出最好的方法来组织一个我即将开始的新项目

我们目前有一个web应用程序和一个移动应用程序,它们都由API提供数据。目前,web应用程序是在CodeIgniter的安装上完成的,API是在CodeIgniter的单独安装上完成的。对于数据,web应用程序调用API,然后处理返回的数据

在这一点上,看起来我们正在为web应用程序切换到Laravel,我认为这可能是一个重新制作API的好机会,因为我们的一些规则已经改变,现在可能是完全摆脱CodeIgniter的时候了

现在来看问题:我已经阅读了一些资料来源,其中有人将他们的web应用程序和API构建到同一个Laravel项目中,并仅使用路由来分别控制API和web应用程序的映射。虽然这似乎是一个有趣的想法,但它让我想知道这是否是最佳实践,因为我想知道大量的API流量是否会减慢web应用程序的速度,反之亦然

问题:

最佳实践是在自己的项目中保持api的解耦,还是在同一个项目中进行解耦

跟进问题


如果web应用程序未解耦,则通过API进行调用,这是否只是对API路由的调用?最好去上课?

在我看来,你有两个选择:

  • 仅使用Laravel(
    Response::json
    everywhere)构建API,然后使用Angular或jQuery等JS框架构建web应用程序。web应用程序和移动应用程序都可以向Laravel应用程序发出AJAX请求,JS框架可以处理显示请求。这将是“不在同一地点构建api+web应用程序”的解决方案。你可以在任何地方构建你的web应用程序,也可以在Laravel应用程序内部构建

    API很容易维护,你甚至可以合并web应用和移动应用,因为它们都可以做相同的事情(除非你真的希望它们不同)。此外,它更易于扩展,因为接口在任何API消费者应用程序中都保持不变

    这将有很大帮助:

  • 在同一位置构建API和web应用程序需要将应用程序分成两部分:一部分响应AJAX请求并返回JSON,另一部分以正常方式响应,返回php视图等等

    这意味着要做大量额外的工作,并使视图数量增加一倍,因为您必须构建由移动应用程序处理的视图和由Laravel本身处理的视图。这需要覆盖和维护(以及测试)很多内容


这取决于你在建设什么样的项目。是温泉吗?

问得好。。。。我总是将我的laravel应用程序与它们的api结合在一起,但从未真正考虑过api流量增加的情况。我真的不认为有正确的答案,但将api解耦听起来确实是个好主意。甚至可以作为一个应用程序包。将API层与Web应用程序分离听起来不错。但我面临的问题是,共享数据库将如何影响开发流程?哪个应用程序将负责管理架构更改等