Топ 7: Лучшие PHP Http-клиентские библиотеки

Многие веб-приложения зависят от услуг, предоставляемых сторонними приложениями через REST API. Эти приложения предлагают определенные конечные точки, где вы можете извлекать, обновлять или удалять информацию в соответствии с данными, методом вашего запроса и т. Д. Однако это невозможно сделать на вашем сервере без приличного Http-клиента, который выполняет запросы за вас. Есть много библиотек, которые достигают этого, так что же является правильным для вас? В соответствии с вашими требованиями вы должны самостоятельно принять решение на основе функций, которые предлагает библиотека. В этой статье мы поделимся с вами 7 лучшими клиентскими библиотеками Http для PHP, которые помогут вам легко общаться с приложениями по всему миру через API.

7. Yii2 Httpclient

Github

Httpclient Yii2 является расширением Yii Framework и позволяет вам реализовать полезный Http-клиент с парой строк кода. Чтобы отправлять HTTP-запросы, вам нужно создать экземпляр [[\ yii \ httpclient \ Client]] и использовать его метод createRequest () для создания нового HTTP-запроса. Затем вы должны настроить все параметры запроса в соответствии с вашей целью и отправить запрос. В результате вы получите экземпляр [[\ yii \ httpclient \ Response]], который содержит всю информацию и данные ответов. Например:

use yii\httpclient\Client;
$client = new Client();
$response = $client->createRequest()
->setMethod('POST')
->setUrl('http://example.com/api/1.0/users')
->setData(['name' => 'John Doe', 'email' => 'johndoe@example.com'])
->send();
if ($response->isOk) {
$newUserId = $response->data['id'];
}

6. Гудение

Github

Buzz — это облегченная библиотека PHP 5.3 для выдачи HTTP-запросов. Buzz был создан Крисом Уоллсмитом еще в 2010 году. За эти годы проект приобрел большую популярность и его скачали более 7 миллионов раз. С августа 2017 года Тобиас Нихольм поддерживает эту библиотеку. Идея Buzz останется прежней, у нас должен быть простой API и имитировать поведение браузера для простого тестирования. Мы не должны изобретать велосипед, и мы не должны быть такими же мощными и гибкими, как другие клиенты (например, Guzzle). Мы, однако, относимся к работе очень серьезно.

Мы очень любим PSR, и это список пожеланий о том, что PSR мы бы хотели поддержать:

  • PSR-1 (Кодовый стиль)
  • PSR-2 (Кодовый стиль)
  • PSR-4 (автозагрузка)
  • PSR-7 (сообщения HTTP)
  • PSR-15 (промежуточное ПО HTTP)
  • PSR-17 (HTTP фабрики)
  • PSR-18 (HTTP-клиент)

Синтаксис Buzz также дружелюбен и прост в написании:

get('http://www.google.com');
echo $browser->getLastRequest()."\n";
// $response is an object.
// You can use $response->getContent() or $response->getHeaders() to get only one part of the response.
echo $response; 

5. Запросы

Github

Requests — это HTTP-библиотека, написанная на PHP, написанная исключительно для простоты использования. Это примерно основано на API из превосходной библиотеки Python запросов. Запросы — ISC Licensed (аналог новой лицензии BSD) и не имеют зависимостей, кроме PHP 5.2+. Несмотря на использование PHP в качестве языка для Интернета, его инструментов для отправки HTTP-запросов крайне не хватает. У cURL есть интересный API, если не сказать больше, и вы не всегда можете рассчитывать на его доступность. Сокеты обеспечивают только низкоуровневый доступ и требуют от вас создания большей части HTTP-ответа. Его синтаксис довольно дружественный и простой в использовании:

$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);
var_dump($request->status_code);
// int(200)
var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"
var_dump($request->body);
// string(26891) "[...]"

Запросы позволяют отправлять HTTP-запросы HEAD, GET, POST, PUT, DELETE и PATCH. Вы можете добавлять заголовки, данные форм, многокомпонентные файлы и параметры с помощью простых массивов и таким же образом получать доступ к данным ответов. Requests использует cURL и fsockopen, в зависимости от того, что доступно в вашей системе, но абстрагирует все неприятные вещи с вашего пути, предоставляя согласованный API.

4. Httplug

Github

PHP-HTTP — это следующий шаг в стандартизации взаимодействия HTTP для пакетов PHP. Он основан на PSR-7, который определяет интерфейсы для HTTP-запросов и ответов. PSR-7 не описывает, однако, как вы должны создавать запросы или отправлять их. PHP-HTTP стремится восполнить этот пробел, предлагая HTTP-интерфейс клиента: HTTPlug.

PHP-HTTP имеет три цели:

  1. Поощряйте разработчиков пакетов полагаться на простой интерфейс HTTPlug вместо конкретных HTTP-клиентов.
  2. Предоставить сообществу PHP хорошее качество HTTP-пакетов.
  3. Со временем сделайте HTTPlug Рекомендацией по стандартам PHP (PSR), чтобы клиенты напрямую реализовывали интерфейс HTTPlug, и наши адаптеры больше не нужны.

HTTPlug абстрагируется от клиентов HTTP, написанных на PHP, предлагая простой интерфейс. Он также предоставляет независимую от реализации систему плагинов для построения конвейеров независимо от используемой реализации клиента HTTP.

3. Httpful

Github

Httpful — это простая, читаемая и читаемая PHP-библиотека, предназначенная для того, чтобы говорить по HTTP нормально Он позволяет разработчику сосредоточиться на взаимодействии с API-интерфейсами, а не на просмотре страниц curl set_opt, и является идеальным клиентом PHP REST. Httpful особенности:

  • Поддержка читаемых методов HTTP (GET, PUT, POST, DELETE, HEAD и OPTIONS)
  • Пользовательские Заголовки
  • Автоматический «умный» парсинг
  • Автоматическая сериализация полезной нагрузки
  • Basic Auth
  • Проверка подлинности сертификата на стороне клиента
  • Запрос «Шаблоны»
// Make a request to the GitHub API with a custom
// header of "X-Trvial-Header: Just as a demo".
$url = "https://api.github.com/users/nategood";
$response = \Httpful\Request::get($url)
->expectsJson()
->withXTrivialHeader('Just as a demo')
->send();
echo "{$response->body->name} joined GitHub on " .
date('M jS', strtotime($response->body->created_at)) ."\n";

2. Unirest PHP

Github

Unirest — это набор облегченных библиотек HTTP, доступных на нескольких языках, созданный и поддерживаемый Mashape, который также поддерживает API-интерфейс с открытым исходным кодом Gateway Kong. В этой библиотеке есть:

  • Служебные методы для вызова запросов GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
  • Поддерживает параметры формы, загрузки файлов и настраиваемые объекты тела
  • Поддерживает gzip
  • Поддержка базовой, дайджест, согласования, аутентификации NTLM
  • Настраиваемый тайм-аут
  • Настраиваемые заголовки по умолчанию для каждого запроса (DRY)
  • Автоматический анализ JSON в нативный объект для ответов JSON
$headers = array('Accept' => 'application/json');
$query = array('foo' => 'hello', 'bar' => 'world');
$response = Unirest\Request::post('http://mockbin.com/request', $headers, $query);
$response->code;        // HTTP Status code
$response->headers;     // Headers
$response->body;        // Parsed body
$response->raw_body;    // Unparsed body

1. пропивать

Github

Guzzle — это PHP-HTTP-клиент, который упрощает отправку HTTP-запросов и упрощает интеграцию с веб-сервисами. Особенности жадности:

  • Простой интерфейс для создания строк запросов, запросов POST, потоковой передачи больших загрузок, потоковой передачи больших загрузок, использования файлов cookie HTTP, загрузки данных JSON и т. Д.
  • Может отправлять как синхронные, так и асинхронные запросы, используя один и тот же интерфейс.
  • Использует интерфейсы PSR-7 для запросов, ответов и потоков. Это позволяет вам использовать другие PSR-7-совместимые библиотеки с Guzzle.
  • Абстрагирует базовый HTTP-транспорт, позволяя писать независимый от среды и транспорта код; т.е. нет жесткой зависимости от cURL, потоков PHP, сокетов или неблокирующих циклов событий.
  • Система промежуточного программного обеспечения позволяет дополнять и составлять поведение клиента.
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

Если вы знаете еще одну замечательную Http Client Library для PHP, пожалуйста, поделитесь ею с сообществом в поле для комментариев.

Ссылка на основную публикацию
Adblock
detector