Подтвердить что ты не робот

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

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

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

Мой вопрос:

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

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

4b9b3361

Ответ 1

Зачем использовать 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 объемом кода, необходимым для простого HTTP-запроса с cURL. С Guzzle проще, чище, читабельно и многоразово. Его довольно просто создать сервис, который будет инкапсулировать ваши запросы Http.

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

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

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

Ответ 2

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

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