在我的应用程序中,我最初开始使用 cURL 从各种 API 检索数据。今天,我试着用暴饮暴食来完成同样的任务。到目前为止,cURL 和 Guzzle 似乎都同样有效。
从 Github来看,很多人似乎都喜欢暴饮暴食,但我并不真正理解其中的原因。
我的问题是:
对于我的情况(从各种 API 检索数据) ,使用 Guzzle 更好吗?如果我用 cURL 代替 Guzzle (或者相反) ,我最终会后悔吗?
我正在使用 PHP/Laravel。
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 现在更具可定制性,并且能够适应 更多的开发商。
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 的意义一样。