制作API中心应用程序,还是不制作?- Laravel

4

最近几周我开始学习Laravel技术,深感其乐趣。

现在是时候重新设计网站并优化功能了,所以我决定从CodeIgniter转到Laravel。

我想知道是否值得在Laravel中创建RESTful API层(非常容易),并将其作为Web应用程序的基础。因为未来我们可能会构建需要使用API的移动应用程序。于是:

  1. 将Web应用程序连接到API是否值得?
  2. 有什么最简单的方法/方式可以调用API而又不必每次写成百上千行的cURL请求代码?

2
只是一点补充 - 尝试使用 Guzzle (http://guzzlephp.org/) 来发送和接收 PHP 请求,它是 Curl 的一个美妙封装,可以帮你避免编写大量的 curl 请求,例如:$client = new Guzzle\Http\Client('http://example.com'); $response = $client->get('/api/users')->send()。非常有用! - Dan Matthews
我想发布这个相关链接,因为我在搜索网络的旅途中通过了它。Aaron Kuzemchak在Laracon 2013(Laravel Conference)上的演讲,“使用Laravel进行简单API开发”。 http://www.youtube.com/watch?v=xa-FRWDxJrI - anaxamaxan
3个回答

4

这绝对是值得的。

我目前正在为一家已经成立的托管公司重新设计混乱的PHP代码,将其转换为漂亮的Laravel代码。我已经有一个与之配合的移动应用程序 - Laravel使返回JSON数据变得轻而易举,只需一行代码就可以完成 -

Response::json('OK', 200);

或者
Response::eloquent(Auth::user());

或者
$tasks = Task::all();
Response::eloquent($tasks);

据我所知,您不需要使用CURL。您可以通过简单的AJAX进行所有请求,使用jQuery可以简化操作。
此外,使用一些MVC JS框架可以帮助您使客户端应用程序代码结构更加优雅,并且优点是,在准备好进行API真实测试时,您可以轻松地将其打包到PhoneGap中。
今天我在我的博客上发布了一个简单的示例,您可以尝试一下,看看这种方法是否值得您花费时间:http://maxoffsky.com/code-blog/login-to-laravel-web-application-from-phonegap-or-backbone/ 请查看并接受答案,如果您认为它是正确的方向。

1
嗨,朋友。我经常阅读你的博客。非常感谢你的回答。不过我在想,如果我已经在Laravel中设置了API,那么我是否需要在其上面再建立一层与Web应用程序交互的接口呢?例如,我有一个控制器显示主页并列出一些数据库结果。那么我该如何在服务器端与API进行交互来实现这一点呢? - Sneaksta
Max,我接受你的答案,因为它让我找到了正确的方向。我已经开始使用cURL将PHP连接到我在Laravel中构建的API。感谢你的帮助! - Sneaksta
你可以使用CURL,但是制作一个客户端应用程序从服务器端API加载东西可能会更容易一些。 - msurguy
哦,你的意思是使用像JavaScript(客户端)这样的东西与API进行交互?而不是在PHP中使用cURL? - Sneaksta
1
+1 还有我的问题的答案。非常感谢您的博客文章。 - imwill
@Sneaksta 是的,你可以使用 AJAX,例如使用 Backbone JS、Ember 或任何其他客户端框架来轻松处理后端 API。这将简化小到中等规模应用程序中的许多事情,并使未来的应用程序中有很多可重用的代码。 - msurguy

1

一如既往,你的结果可能会有所不同,但这正是我目前正在经历的。我正在迁移一个具有此 API 架构的大型 .Net 站点,并决定将其保留为 Laravel。

我个人之所以做出这个决定,是因为:

  1. 更具可扩展性。我可以设置 api.domain.com,然后随着我们的流量增长添加额外的盒子 / vm / 任何内容。事实上,您可以通过“轮换”或多个 DNS 条目为该域名负载平衡仅限于 API。

  2. 为新站点和应用程序未来打好基础。听起来你也是同样的情况。我可以看到在未来一年左右将添加一个或两个应用程序。

  3. 低成本。您已经布置了控制器,所以实际上只需要将它们设置为 RESTful 并进行小的调整即可。

公正地说,还有一些反对意见:

  1. 可能会增加处理 API 的加载时间,尽管这应该是最小的。

  2. 如果您想将事物锁定在您自己的应用程序中,则需要考虑其他安全问题。

无论如何,欢迎使用 Laravel!


谢谢你的答案,欢迎! :) 要考虑的非常好的观点。 - Sneaksta

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接