PHP - 为什么使用 Guzzle 而不是 cURL?

新手上路,请多包涵

在我的应用程序中,我最初开始使用 cURL 从各种 API 检索数据。今天,我尝试使用 Guzzle 来完成同样的任务。到目前为止,cURL 和 Guzzle 似乎都工作得同样好。

Github 来看,很多人似乎都喜欢 Guzzle,但我不太明白为什么。

我的问题:

对于我的情况(从各种 API 检索数据),使用 Guzzle 更好吗?如果我使用 cURL 而不是 Guzzle(反之亦然),我最终会后悔吗?

我正在使用 PHP/Laravel。

原文由 Cato Minor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 670
2 个回答

为什么要使用 Guzzle?

首先,Guzzle 是 http 请求的抽象层,虽然它默认使用 cURL,但您可以使用任何其他您想要的 http 客户端:

Guzzle 是否需要 cURL?

不可以。Guzzle 可以使用任何 HTTP 处理程序来发送请求。这意味着 Guzzle 可以与 cURL、PHP 的流包装器、套接字和非阻塞库(如 React)一起使用。您只需要配置一个 HTTP 处理程序以使用不同的方法发送请求

注意: Guzzle 过去只使用 cURL 发送 HTTP 请求。 cURL 是一个了不起的 HTTP 客户端(可以说是最好的),Guzzle 将在可用时默认继续使用它。这种情况很少见,但有些开发人员没有在他们的系统上安装 cURL 或遇到特定于版本的问题。通过允许可交换的 HTTP 处理程序,Guzzle 现在更加可定制并且能够适应更多开发人员的需求。

由于您使用的是 Laravel,如果您有任何机会使用任何电子邮件 API,那么现在您已经安装了 Guzzle。在你的 Laravel 的 composer.json 你可以看到一个建议:

 "suggest": {
    ...
    "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
    ...
}

另一个原因是重用代码,看看 bogdan 的评论,用 cURL 做一个简单的 http 请求需要多少代码。 Guzzle 更简单、更清晰、可读和可重用。创建一个封装您的 Http 请求的服务非常容易。

Guzzle 还允许您执行 异步请求,这与您使用 promises 处理 javascript 的方式非常相似。

最后但同样重要的是,测试!与使用 cURL 相比,使用 Guzzle 对 API 进行测试或为应用程序创建单元测试并模拟 http 请求要容易得多。有关测试的更多信息,请 点击此处

但是,如果您只想执行 几个 简单的 http 请求(似乎并非如此),那么您不关心测试,也不希望依赖于 Guzzle go for cURL。

原文由 Fabio Antunes 发布,翻译遵循 CC BY-SA 3.0 许可协议

Guzzle 之于 cURL 就像 axios 之于 XMLHttpRequest。

原文由 Hayden 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏