Esta biblioteca não está em desenvolvimento ativo.
Por favor, considere o Guzzlehttp/Guzzle ou outra biblioteca.
Apenas correções de bug.
A Hyper é um cliente HTTP que visa fornecer uma interface simples, mas poderosa, para fazer chamadas HTTP e buscar e manipular dados da API.
Hyper::get('http://some/url') .Hyper::make(...)->get('http://some/url') .Response que fornece informações úteis, como código de status HTTP, corpo e cabeçalhos.Response se mistura no REXLABS Array-Object, que permite interrogar facilmente as respostas da API.Request original via $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 em seu projeto:
composer require rexlabs/hyper-http Todos os métodos RESTful retornam um objeto Response que simplifica a interação com as respostas.
<?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' https://example.com/url ' );
echo ' Status Code: ' . $ response -> getStatusCode (). "n" ;
echo ( string ) $ response ; // Output the response bodyComo as respostas Mixin ArrayObject você pode buscar facilmente e manipular valores da resposta:
<?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 a instanciação e configurar o objeto para solicitações futuras:
<?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 obter controle completo sobre a instanciação, use o construtor e passe em uma instância de desfiladeiro:
<?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 ' );Você pode gerar facilmente uma solicitação de CLO para fugir da linha de comando para reproduzir sua última solicitação:
<?php
use Rexlabs HyperHttp Hyper ;
echo Hyper:: get ( ' https://example.com/api/v1/resources ' )
-> getCurlRequest ();Saída:
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 ' O Hyper fornece os seguintes métodos para interagir com pontos de extremidade remotos:
get(mixed $uri, array $query = [], array $headers = [], array $options = []): Response
Envie uma solicitação HTTP e retorne a resposta:
$ response = Hyper:: get ( ' https://example.com ' , [ ' sort ' => ' latest ' ], [ ' X-Greeting ' => ' Hello! ' ]);
$ response = $ hyper -> get ( ' /v1/people ' );$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$query é uma matriz opcional de parâmetros de consulta que será anexada ao URI.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do Guzzle. post(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envie uma solicitação de postagem HTTP e retorne a resposta:
$ response = Hyper:: post ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> post ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$body é a carga útil. Se você fornecer uma matriz, ela será convertida e transportada como JSON.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do 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
Envie uma solicitação de put http e devolva a resposta:
$ response = Hyper:: put ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> put ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$body é a carga útil. Se você fornecer uma matriz, ela será convertida e transportada como JSON.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do Guzzle. patch(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envie uma solicitação de patch http e retorne a resposta:
$ response = Hyper:: patch ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> patch ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$body é a carga útil. Se você fornecer uma matriz, ela será convertida e transportada como JSON.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do Guzzle. delete(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Envie uma solicitação de exclusão http e retorne a resposta:
$ response = Hyper:: delete ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> delete ( ' /v1/people/1 ' );$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$body é a carga útil opcional. Se você fornecer uma matriz, ela será convertida e transportada como JSON.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do Guzzle. call(string $method, mixed $uri, mixed $body, array $headers, array $options): Response
Envie uma solicitação HTTP genérica especificando o method como o primeiro 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 é o verbo http. Por exemplo. GET ou algo não parte do padrão.$uri é uma string ou Uri . Se a string não for absoluta, ela será anexada ao URI base.$body é a carga útil opcional. Se você fornecer uma matriz, ela será convertida e transportada como JSON.$headers é uma variedade opcional de cabeçalhos (indexados pelo nome do cabeçalho) que será fundido com quaisquer cabeçalhos globais.$options é uma matriz opcional de opções de clientes do Guzzle. Métodos disponíveis no objeto RexlabsHyperHttpMessageRequest :
Retorne o objeto Uriinterface que encapsula o URI/URL para esta solicitação.
Retorne o verbo do método HTTP para esta solicitação.
Retur uma variedade de cabeçalhos para este Request
Retorne uma solicitação de curl (string) adequada para fugir da linha de comando. Útil para depurar solicitações.
Métodos disponíveis no objeto RexlabsHyperHttpMessageResponse :
Retorne o objeto RexlabsHyperHttpMessageRequest associado à Response
Retorne uma solicitação de curl (string) adequada para fugir da linha de comando. Útil para depurar solicitações.
Retorne o código de status HTTP para esta Response . Por exemplo. 200
Retorne a frase de razão HTTP associada ao código de status. Por exemplo. "OK"
Retorna true se esta for uma resposta JSON.
Converte uma resposta JSON em uma matriz e retorna a matriz.
Converte uma resposta JSON em um ArrayObject
Todo objeto Response possui todos os métodos e funcionalidades da classe ArrayObject do pacote rexlabsarray-object .
Isso significa com base na seguinte carga útil de resposta:
{
"books" : [
{
"id" : 1 ,
"title" : " 1984 " ,
"author" : " George Orwell "
},
{
"id" : 2 ,
"title" : " Pride and Prejudice " ,
"author" : " Jane Austen "
}
]
}Você pode executar as seguintes funções:
$ 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" ;
}Você também pode ligar:
$ obj = $ response -> toObject (); // Instance of Arraybject Defina a configuração padrão para todos os clientes (padrões para [])
Hyper:: setDefaultConfig ( $ config );Defina a configuração para este cliente (os valores substituirão / se fundirão com o padrão)
$ client = Hyper:: make ( $ config ); Defina o logger padrão usado por todos os clientes que não fornecem um.
Deve implementar LoggerInterface (padrão para NullLogger )
Hyper:: setDefaultLogger ( $ logger );Logre a string CURL para todas as solicitações (requer um conjunto de madeireiros)
$ config = [
' log_curl ' => true ,
]; Defina a configuração passada para o GuzzleClient subjacente
$ config = [
' guzzle ' => [
' verify ' => false ,
],
];
// Set for all clients
Hyper:: setDefaultConfig ( $ config );
// Set for one client
$ client = Hyper:: make ( $ config );Para executar testes:
composer testsPara executar o relatório de cobertura:
composer coverage O relatório de cobertura é emitido para ./tests/report/index.html
O Hyper permite extensão para clientes personalizados por:
MyHyperSubclass retornará a instância correta criada por MyHyperSubclassHyper retornará a instância correta criada por Hyperprotected static function makeClient para personalizar a classe Client (por exemplo, substitua new Client pelo new MyClient )protected static function makeConfig para personalizar a configuração padrão do clienteprotected static function makeGuzzleConfig para personalizar o cliente Guzzle padrãoprotected static function getBaseUri para fornecer uma base padrão base para o cliente As contribuições são bem-vindas, envie uma solicitação de tração ou crie um problema. Seu código enviado deve ser formatado usando os padrões PSR-1/PSR-2.