Эта библиотека не в активной разработке.
Пожалуйста, рассмотрите Guzzehttp/Guzzle или другую библиотеку.
Только исправления ошибок.
Hyper - это HTTP -клиент, который стремится обеспечить простой, но мощный интерфейс для выполнения HTTP -вызовов, а также получения и манипулирования данными API.
Hyper::get('http://some/url') .Hyper::make(...)->get('http://some/url') .Response , который предоставляет полезную информацию, такую как код состояния HTTP, тело и заголовки.Response смешивает в Rexlabs Array-объект, что позволяет легко опросить ответы API.Request через $response->getRequest() . <?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' http://openlibrary.org/subjects/love.json ' );
// The first book for 'love' is: Wuthering Heights
echo " The first book for ' { $ response -> name } ' is: { $ response -> works -> first ()-> title }n" ;
echo " Total works: { $ response -> works -> count ()} books n" ;Чтобы установить в свой проект:
composer require rexlabs/hyper-http Все методы Retfful возвращают объект Response , который делает взаимодействие с ответами простым.
<?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' https://example.com/url ' );
echo ' Status Code: ' . $ response -> getStatusCode (). "n" ;
echo ( string ) $ response ; // Output the response bodyПоскольку ответы Mixin ArryObject вы можете легко получить и манипулировать значениями из ответа:
<?php
use Rexlabs HyperHttp Hyper ;
// Fetch historical price via CryptoCompare's public API for Ethereum
$ response = Hyper:: get ( ' https://min-api.cryptocompare.com/data/pricehistorical ' , [
' fsym ' => ' ETH ' ,
' tsyms ' => ' BTC,USD ' ,
' ts ' => ' 1452680400 ' ,
]);
// Output prices
printf ( " ETH->USD: %s n" , $ response -> get ( ' ETH.USD ' ));
printf ( " ETH->BTC: %s n" , $ response -> get ( ' ETH.BTC ' )); Используйте make() для упрощения экземпляров, а затем настроить объект для будущих запросов:
<?php
use Rexlabs HyperHttp Hyper ;
use Rexlabs Logger CustomLogger ;
$ hyper = Hyper:: make ()
-> setBaseUri ( ' http://example.com/api/v1 ' )
-> setHeader ( ' X-App-Identity ' , ' Some App ' )
-> setHeader ( ' X-Correlation-Id ' , ' 12345 ' )
-> setLogger ( new CustomLogger );$hyper = Hyper::make(array $config = [], GuzzleHttpClient $guzzle, PsrLogLoggerInterface $logger)Чтобы получить полный контроль над экземпляром, используйте конструктор и пропустите экземпляр Guzze:
<?php
use Rexlabs HyperHttp Client ;
use GuzzleHttp Client as GuzzleClient ;
use Psr Log NullLogger ;
$ hyper = new Client ( new GuzzleClient (), new NullLogger (), [
' base_uri ' => ' http://example.com/api/v1 ' ,
' headers ' => [
' X-App-Identity ' => ' Some App ' ,
],
]);
$ response = $ hyper -> get ( ' /messages ' );Вы можете легко сгенерировать запрос на запуск из командной строки, чтобы воспроизвести ваш последний запрос:
<?php
use Rexlabs HyperHttp Hyper ;
echo Hyper:: get ( ' https://example.com/api/v1/resources ' )
-> getCurlRequest ();Выход:
curl
' https://min-api.cryptocompare.com/data/pricehistorical?fsym=ETH&tsyms=BTC%2CUSD&ts=1452680400&extraParams=your_app_name '
-H ' Content-Type: application/json ' -H ' Accept: application/json ' Hyper предоставляет следующие методы взаимодействия с удаленными конечными точками:
get(mixed $uri, array $query = [], array $headers = [], array $options = []): Response
Отправьте запрос на http get и верните ответ:
$ response = Hyper:: get ( ' https://example.com ' , [ ' sort ' => ' latest ' ], [ ' X-Greeting ' => ' Hello! ' ]);
$ response = $ hyper -> get ( ' /v1/people ' );$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$query - это необязательный массив параметров запроса, которые будут добавлены к URI.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze. post(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Отправьте запрос на сообщение HTTP и верните ответ:
$ response = Hyper:: post ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> post ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$body - это полезная нагрузка. Если вы предоставите массив, он будет преобразован и транспортирован как JSON.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze.Альтернативные методы:
$response = $hyper->postForm($uri, $formParams, $headers, $options);$response = $hyper->postMultipartForm($uri, $formParams, $headers, $options); put(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Отправить запрос на http put и вернуть ответ:
$ response = Hyper:: put ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> put ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$body - это полезная нагрузка. Если вы предоставите массив, он будет преобразован и транспортирован как JSON.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze. patch(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Отправьте запрос на патч HTTP и верните ответ:
$ response = Hyper:: patch ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> patch ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$body - это полезная нагрузка. Если вы предоставите массив, он будет преобразован и транспортирован как JSON.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze. delete(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Отправьте запрос на удаление HTTP и верните ответ:
$ response = Hyper:: delete ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> delete ( ' /v1/people/1 ' );$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$body - это дополнительная полезная нагрузка. Если вы предоставите массив, он будет преобразован и транспортирован как JSON.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze. call(string $method, mixed $uri, mixed $body, array $headers, array $options): Response
Отправьте общий HTTP -запрос, указав method в качестве первого аргумента.
// Statically
$ response = Hyper:: call ( ' MOVE ' , ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);
// Http method verbs may also be invoked via method name
$ response = Hyper:: move ( ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);
$ response = Hyper:: somethingelse (...);
// Via object
$ response = $ hyper -> call ( ' MOVE ' , ' myfile1234 ' , [ ' new_location ' => ' some_folder ' ]);$method - это глагол HTTP. Например. GET или что -то не является частью стандарта.$uri - это строка или Uri . Если строка не является абсолютной, она будет добавлена к базовому URI.$body - это дополнительная полезная нагрузка. Если вы предоставите массив, он будет преобразован и транспортирован как JSON.$headers - это необязательный набор заголовков (индексированных по имени заголовка), который будет объединен с любыми глобальными заголовками.$options - это необязательный массив вариантов клиента Guzze. Методы, доступные в RexlabsHyperHttpMessageRequest Object:
Верните объект UriInterface, который инкапсулирует URI/URL для этого запроса.
Верните глагол метода HTTP для этого запроса.
Повторно переведите множество заголовков для этого Request
Верните запрос на скручивание (строка), подходящее для работы из командной строки. Полезно для отладки запросов.
Методы, доступные от RexlabsHyperHttpMessageResponse Object:
Вернуть RexlabsHyperHttpMessageRequest -объект, связанный с Response
Верните запрос на скручивание (строка), подходящее для работы из командной строки. Полезно для отладки запросов.
Верните код состояния HTTP для этого Response . НАПРИМЕР. 200
Вернуть фразу HTTP -разум, связанную с кодом состояния. НАПРИМЕР. "ХОРОШО"
Возвращает true если это ответ JSON.
Преобразует ответ JSON в массив и возвращает массив.
Преобразует ответ JSON в ArrayObject
Каждый объект Response имеет все методы и функциональность класса ArrayObject из пакета rexlabsarray-object .
Это означает, что на основе следующей полезной нагрузки ответа:
{
"books" : [
{
"id" : 1 ,
"title" : " 1984 " ,
"author" : " George Orwell "
},
{
"id" : 2 ,
"title" : " Pride and Prejudice " ,
"author" : " Jane Austen "
}
]
}Вы можете выполнить следующие функции:
$ response -> books ; // Instance of ArrayObject
$ response -> books -> pluckArray ( ' author ' ); // array [ 'George Orwell', 'Jane Austen' ]
$ response -> pluckArray ( ' books.author ' ); // array [ 'George Orwell', 'Jane Austen' ]
$ response -> books -> count (); // 2
$ response -> books -> isCollection (); // true
$ response -> books [ 0 ]; // Instance of ArrayObject
$ response -> books [ 0 ]-> isCollection (); // false
$ response -> books [ 0 ]-> id ; // 1
$ response -> get ( ' books.1.title ' ); // "Pride and Prejudice"
foreach ( $ response -> books as $ book ) {
echo "{ $ book -> title } by { $ book -> author }n" ;
}Вы также можете позвонить:
$ obj = $ response -> toObject (); // Instance of Arraybject Установить конфигурацию по умолчанию для всех клиентов (по умолчанию в [])
Hyper:: setDefaultConfig ( $ config );Установите config для этого клиента (значения будут переоценить / слияние по умолчанию)
$ client = Hyper:: make ( $ config ); Установите регистратор по умолчанию, используемый всеми клиентами, которые не предоставляют его.
Должен реализовать LoggerInterface (по умолчанию в NullLogger )
Hyper:: setDefaultLogger ( $ logger );Войдите по строке Curl для всех запросов (требуется набор регистрации)
$ config = [
' log_curl ' => true ,
]; Установите конфигурацию, передаваемую в базовый GuzzleClient
$ config = [
' guzzle ' => [
' verify ' => false ,
],
];
// Set for all clients
Hyper:: setDefaultConfig ( $ config );
// Set for one client
$ client = Hyper:: make ( $ config );Чтобы запустить тесты:
composer testsЧтобы запустить отчет о покрытии:
composer coverage Отчет о покрытии выводит на ./tests/report/index.html
Hyper позволяет расширить для пользовательских клиентов по:
MyHyperSubclass вернет правильный экземпляр, созданный MyHyperSubclassHyper вернет правильный экземпляр, созданный Hyperprotected static function makeClient для настройки клиентского класса (например, замените new Client new MyClient )protected static function makeConfig для настройки клиента по умолчаниюprotected static function makeGuzzleConfig для настройки клиента по умолчанию по умолчаниюprotected static function getBaseUri чтобы предоставить клиенту базовую_ари по умолчанию. Взносы приветствуются, пожалуйста, отправьте запрос или создайте проблему. Ваш отправленный код должен быть отформатирован с использованием стандартов PSR-1/PSR-2.