PHP - Зачем использовать Guzzle Вместо cURL?


В своем приложении я изначально начал использовать cURL для извлечения данных из различных API. Сегодня я попытался использовать Guzzle для выполнения той же задачи. До сих пор и Завиток, и Жадность, похоже, работают одинаково хорошо.

Судя по Github, многим людям, похоже, нравится жрать, но я не очень понимаю, почему.

Мой вопрос:

В моей ситуации (получение данных из различных API) предпочтительнее использовать Guzzle? Буду ли я в конце концов сожалеть об этом, если я использую Скручиваться вместо того, чтобы жрать (или наоборот)?

Я использую PHP/Laravel.

Author: Cato Minor, 2016-04-11

2 answers

Зачем использовать Жрать?

Прежде всего, Guzzle - это уровень абстракции для http-запроса, хотя по умолчанию он использует cURL, вы можете использовать любой другой http-клиент, который вы хотите:

Требует ли жадность завитка?

Нет. Guzzle может использовать любой HTTP-обработчик для отправки запросов. Это означает, что Guzzle можно использовать с cURL, оболочкой потока PHP, сокетами и неблокирующими библиотеками, такими как React. Вам просто нужно настроить 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).",
    ...
}

Еще одной причиной будет повторное использование кода, взгляните на комментарий, сделанный Богданом объем кода, необходимый для выполнения простого http-запроса с помощью cURL. С жадностью намного проще, чище, читабельнее и многоразовее. Довольно легко создать сервис, который будет инкапсулируйте свои Http-запросы.

Guzzle также позволяет выполнять асинхронные запросы , очень похоже на то, как вы делаете с javascript, используя обещания.

И последнее, но не менее важное: тесты! Гораздо проще выполнять тесты для вашего API или создавать модульные тесты для вашего приложения и имитировать http-запросы с помощью Guzzle, чем с помощью cURL. Более подробная информация о тестах здесь

НО если вы хотите выполнить только пару простых http-запросов (что, похоже, не случай) вас не волнуют тесты, и вы не хотите зависеть от Guzzle go для cURL.

 58
Author: Fabio Antunes, 2017-05-23 10:31:15

Guzzle - это уровень абстракции для HTTP-транспорта, который, где это возможно, использует cURL.

Как и выше, в то время как вы можете все делать самостоятельно с помощью cURL, Guzzle значительно упрощает работу, особенно когда дело доходит до отладки.

 3
Author: DevDonkey, 2016-04-11 12:02:26