PHP-为什么用 Guzzle 代替 cURL?

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

Github来看,很多人似乎都喜欢暴饮暴食,但我并不真正理解其中的原因。

我的问题是:

对于我的情况(从各种 API 检索数据) ,使用 Guzzle 更好吗?如果我用 cURL 代替 Guzzle (或者相反) ,我最终会后悔吗?

我正在使用 PHP/Laravel。

45057 次浏览

Guzzle 是一个 HTTP 传输的抽象层,它恰好在可用的地方使用 cURL。

除了上述内容之外,虽然您可以使用 cURL 自己完成所有事情,但是 Guzzle 极大地简化了事情,特别是在调试方面。

为什么要用暴饮暴食?

首先,Guzzle 是 http 请求的抽象层,尽管默认情况下它使用 cURL,你可以使用任何其他你想要的 http 客户端:

Guzzle 需要 cURL 吗?

不。暴饮可以使用任何 HTTP 处理程序发送请求。这意味着 Guzzle 可以与 cURL、 PHP 的流包装器、套接字和 您只需要配置一个 HTTP 处理程序使用发送请求的不同方法

注意: Guzzle 过去只使用 cURL 发送 HTTP 请求。 CURL 是一个神奇的 HTTP 客户端(可以说是最好的客户端) ,而 Guzzle 将会是 当它可用时,默认情况下继续使用它。这是罕见的,但 有些开发人员的系统上没有安装 cURL,或者遇到 通过允许可切换的 HTTP 处理程序,Guzzle 现在更具可定制性,并且能够适应 更多的开发商。

因为你正在使用 Laravel,如果有任何机会你使用任何电子邮件 API,那么现在你已经安装了 Guzzle。在 Laravel 的 作曲家 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 请求所需的代码量所做的注释。与狂饮更简单,更清洁,可读性和可重复使用。创建一个封装 Http 请求的服务非常容易。

Guzzle 还允许您执行 异步请求,这与使用承诺执行 javascript 的方法非常相似。

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

但是 如果你只想做简单的 http 请求的 只有几个(看起来不是这样) ,你不关心测试,也不想依赖于 Guzzle,那么就去做 cURL 吧。

Guzzle 对于 cURL 的意义就像 Axios 对于 XMLHttpRequest 的意义一样。