PHP - Зачем использовать Guzzle Вместо cURL?
В своем приложении я изначально начал использовать cURL для извлечения данных из различных API. Сегодня я попытался использовать Guzzle для выполнения той же задачи. До сих пор и Завиток, и Жадность, похоже, работают одинаково хорошо.
Судя по Github, многим людям, похоже, нравится жрать, но я не очень понимаю, почему.
Мой вопрос:
В моей ситуации (получение данных из различных API) предпочтительнее использовать Guzzle? Буду ли я в конце концов сожалеть об этом, если я использую Скручиваться вместо того, чтобы жрать (или наоборот)?
Я использую PHP/Laravel.
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.
Guzzle - это уровень абстракции для HTTP-транспорта, который, где это возможно, использует cURL.
Как и выше, в то время как вы можете все делать самостоятельно с помощью cURL, Guzzle значительно упрощает работу, особенно когда дело доходит до отладки.