Esta biblioteca no está en desarrollo activo.
Considere GuzzleHttp/Guzzle u otra biblioteca en su lugar.
Solamente corrige el error.
Hyper es un cliente HTTP que tiene como objetivo proporcionar una interfaz simple pero poderosa para hacer llamadas HTTP y obtener y manipular datos de API.
Hyper::get('http://some/url') .Hyper::make(...)->get('http://some/url') .Response que proporciona información útil como código de estado HTTP, cuerpo y encabezados.Response se mezcla en RexLabs Array-Object, que le permite interrogar fácilmente las respuestas de API.Request original a través de $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" ;Para instalar en su proyecto:
composer require rexlabs/hyper-http Todos los métodos RESTFUL devuelven un objeto Response que simplifica la interacción con las respuestas.
<?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' https://example.com/url ' );
echo ' Status Code: ' . $ response -> getStatusCode (). "n" ;
echo ( string ) $ response ; // Output the response bodyDado que las respuestas mezclan ArrayObject, puede obtener y manipular valores fácilmente de la respuesta:
<?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 ' )); Use make() para simplificar la instanciación y luego configurar el objeto para futuras solicitudes:
<?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)Para obtener un control completo sobre la instanciación, use el constructor y pase en una instancia de Guzzle:
<?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 ' );Puede generar fácilmente una solicitud CURL para ejecutar desde la línea de comandos para reproducir su última solicitud:
<?php
use Rexlabs HyperHttp Hyper ;
echo Hyper:: get ( ' https://example.com/api/v1/resources ' )
-> getCurlRequest ();Producción:
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 proporciona los siguientes métodos para interactuar con puntos finales remotos:
get(mixed $uri, array $query = [], array $headers = [], array $options = []): Response
Envíe una solicitud HTTP Get y devuelva la respuesta:
$ response = Hyper:: get ( ' https://example.com ' , [ ' sort ' => ' latest ' ], [ ' X-Greeting ' => ' Hello! ' ]);
$ response = $ hyper -> get ( ' /v1/people ' );$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$query es una matriz opcional de parámetros de consulta que se agregarán al URI.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle. post(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envíe una solicitud de publicación HTTP y devuelva la respuesta:
$ response = Hyper:: post ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> post ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$body es la carga útil. Si proporciona una matriz, se convertirá y transportará como JSON.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle.Métodos alternativos:
$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
Envíe una solicitud de put HTTP y devuelva la respuesta:
$ response = Hyper:: put ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> put ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$body es la carga útil. Si proporciona una matriz, se convertirá y transportará como JSON.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle. patch(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envíe una solicitud de parche HTTP y devuelva la respuesta:
$ response = Hyper:: patch ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> patch ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$body es la carga útil. Si proporciona una matriz, se convertirá y transportará como JSON.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle. delete(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envíe una solicitud de eliminación HTTP y devuelva la respuesta:
$ response = Hyper:: delete ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> delete ( ' /v1/people/1 ' );$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$body es la carga útil opcional. Si proporciona una matriz, se convertirá y transportará como JSON.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle. call(string $method, mixed $uri, mixed $body, array $headers, array $options): Response
Envíe una solicitud HTTP genérica especificando el method como el primer argumento.
// 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 es el verbo http. P.ej. GET o algo que no sea parte del estándar.$uri es una cadena o un Uri . Si la cadena no es absoluta, se agregará al URI base.$body es la carga útil opcional. Si proporciona una matriz, se convertirá y transportará como JSON.$headers es una matriz opcional de encabezados (indexada por el nombre del encabezado) que se fusionará con cualquier encabezado global.$options es una variedad opcional de opciones de cliente Guzzle. Métodos disponibles en el objeto RexlabsHyperHttpMessageRequest :
Devuelva el objeto Uriinterface que encapsula el URI/URL para esta solicitud.
Devuelva el verbo de método HTTP para esta solicitud.
Returue una variedad de encabezados para esta Request
Devuelva una solicitud CURL (cadena) adecuada para ejecutar desde la línea de comandos. Útil para solicitudes de depuración.
Métodos disponibles en el objeto RexlabsHyperHttpMessageResponse :
Devuelve el objeto RexlabsHyperHttpMessageRequest asociado con la Response
Devuelva una solicitud CURL (cadena) adecuada para ejecutar desde la línea de comandos. Útil para solicitudes de depuración.
Devuelva el código de estado HTTP para esta Response . P.EJ. 200
Devuelva la frase de razón HTTP asociada con el código de estado. P.EJ. "DE ACUERDO"
Devuelve true si esta es una respuesta JSON.
Convierte una respuesta JSON a una matriz y devuelve la matriz.
Convierte una respuesta JSON a un ArrayObject
Cada objeto Response tiene todos los métodos y funcionalidad de la clase ArrayObject del paquete rexlabsarray-object .
Esto significa basado en la siguiente carga útil de respuesta:
{
"books" : [
{
"id" : 1 ,
"title" : " 1984 " ,
"author" : " George Orwell "
},
{
"id" : 2 ,
"title" : " Pride and Prejudice " ,
"author" : " Jane Austen "
}
]
}Puede realizar las siguientes funciones:
$ 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" ;
}También puedes llamar:
$ obj = $ response -> toObject (); // Instance of Arraybject Establecer configuración predeterminada para todos los clientes (predeterminados a [])
Hyper:: setDefaultConfig ( $ config );Establecer config para este cliente (los valores anularán / fusionarán con el valor predeterminado)
$ client = Hyper:: make ( $ config ); Establezca el registrador predeterminado utilizado por todos los clientes que no proporcionan uno.
Debe implementar LoggerInterface (predeterminado se encuentra a NullLogger )
Hyper:: setDefaultLogger ( $ logger );Registre la cadena curl para todas las solicitudes (requiere un conjunto de registradores)
$ config = [
' log_curl ' => true ,
]; Establezca la configuración pasada al GuzzleClient subyacente
$ config = [
' guzzle ' => [
' verify ' => false ,
],
];
// Set for all clients
Hyper:: setDefaultConfig ( $ config );
// Set for one client
$ client = Hyper:: make ( $ config );Para ejecutar pruebas:
composer testsPara ejecutar el informe de cobertura:
composer coverage El informe de cobertura se emite a ./tests/report/index.html
Hyper permite la extensión para clientes personalizados por:
MyHyperSubclass devolverá la instancia correcta creada por MyHyperSubclassHyper devolverá la instancia correcta creada por Hyperprotected static function makeClient para personalizar la clase de cliente (por ejemplo, reemplace new Client con new MyClient )protected static function makeConfig para personalizar la configuración del cliente predeterminadaprotected static function makeGuzzleConfig para personalizar el cliente GUzzle predeterminadoprotected static function getBaseUri para proporcionar una base_uri predeterminada al cliente Las contribuciones son bienvenidas, envíe una solicitud de extracción o cree un problema. Su código enviado debe formatearse utilizando estándares PSR-1/PSR-2.