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

时间:2014-06-26 05:35:03

标签: api codeigniter web-applications laravel-4

我正在试图找出构建我即将开始的新项目的最佳方法。

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

此时看起来我们正在为Web应用程序切换到Laravel,我认为这可能是一个很好的机会也可以重做API,因为我们的一些规则已经改变,可能是时候了关闭CodeIgniter。

现在提出这样的问题:我已经阅读了一些人们在同一个Laravel项目中构建他们的Web应用程序和API的消息来源,并且只是使用路由来分别控制API和Web应用程序的映射。虽然这似乎是一个有趣的想法,但它让我怀疑它是否是最佳实践,因为我想知道重量级API流量是否会减慢Web应用程序的速度,反之亦然。

问题:

最佳做法是将api与其自己的项目分开,还是可以在同一个项目中进行?

跟进问题

如果没有解耦,要通过API从Web应用程序拨打电话,那只是调用API路由吗?最好通过课程吗?

1 个答案:

答案 0 :(得分:3)

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

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

    API易于维护,您甚至可以合并Web应用程序和移动应用程序,因为它们都会这样做(除非您确实希望它们不同)。此外,它更容易扩展,因为任何API消费者应用程序的界面都保持不变。

    这将有助于很多https://laracasts.com/series/incremental-api-development

  • 在同一个地方构建API和Web应用程序,需要在2中分离您的应用程序:一部分将响应AJAX请求并返回JSON,另一部分将以正常方式回答,返回php视图和所有......

    这意味着需要额外的大量工作,并且会增加一倍的视图,因为您必须构建移动应用处理的视图和Laravel本身处理的视图。这需要覆盖和维护(和测试)。

这取决于您正在构建的项目类型。是SPA吗?