Diese Bibliothek ist nicht in aktiver Entwicklung.
Bitte betrachten Sie stattdessen GuzzleHttp/Guzzle oder eine andere Bibliothek.
Nur Fehlerbehebungen.
Hyper ist ein HTTP -Client, der eine einfache, aber leistungsstarke Schnittstelle für HTTP -Anrufe und Abrufen und Manipulation von API -Daten bereitstellt.
Hyper::get('http://some/url') .Hyper::make(...)->get('http://some/url') .Response , das nützliche Informationen wie HTTP -Statuscode, Körper und Header bietet.Response mischt sich in Rexlabs Array-Object, mit dem Sie die API-Antworten leicht befragen können.Request über $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" ;In Ihrem Projekt zu installieren:
composer require rexlabs/hyper-http Die erholsamen Methoden geben alle ein Response zurück, das die Interaktion mit Antworten einfach macht.
<?php
use Rexlabs HyperHttp Hyper ;
$ response = Hyper:: get ( ' https://example.com/url ' );
echo ' Status Code: ' . $ response -> getStatusCode (). "n" ;
echo ( string ) $ response ; // Output the response bodyDa Antworten Mixin ArrayObject Sie problemlos Werte aus der Antwort abrufen und manipulieren können:
<?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 ' )); Verwenden Sie make() , um die Instanziierung zu vereinfachen und das Objekt dann für zukünftige Anforderungen einzurichten:
<?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)Verwenden Sie den Konstruktor, um die vollständige Kontrolle über die Instanziierung zu erhalten und in einer Guzzle -Instanz zu bestehen:
<?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 ' );Sie können problemlos eine Curl-Anfrage zum Ausführen aus der Befehlszeile erstellen, um Ihre letzte Anfrage zu reproduzieren:
<?php
use Rexlabs HyperHttp Hyper ;
echo Hyper:: get ( ' https://example.com/api/v1/resources ' )
-> getCurlRequest ();Ausgabe:
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 liefert die folgenden Methoden zur Interaktion mit Remote -Endpunkten:
get(mixed $uri, array $query = [], array $headers = [], array $options = []): Response
Senden Sie eine HTTP -GET -Anfrage und geben Sie die Antwort zurück:
$ response = Hyper:: get ( ' https://example.com ' , [ ' sort ' => ' latest ' ], [ ' X-Greeting ' => ' Hello! ' ]);
$ response = $ hyper -> get ( ' /v1/people ' );$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$query ist eine optionale Reihe von Abfrageparametern, die an die URI beigefügt werden.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen. post(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Senden Sie eine HTTP -Postanforderung und geben Sie die Antwort zurück:
$ response = Hyper:: post ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> post ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$body ist die Nutzlast. Wenn Sie ein Array angeben, wird es als JSON umgewandelt und transportiert.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen.Alternative Methoden:
$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
Senden Sie eine HTTP -Anfrage und geben Sie die Antwort zurück:
$ response = Hyper:: put ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> put ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$body ist die Nutzlast. Wenn Sie ein Array angeben, wird es als JSON umgewandelt und transportiert.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen. patch(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Senden Sie eine HTTP -Patch -Anfrage und geben Sie die Antwort zurück:
$ response = Hyper:: patch ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> patch ( ' /v1/people ' , [ ' name ' => ' Bob ' , ' age ' => 25 ]);$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$body ist die Nutzlast. Wenn Sie ein Array angeben, wird es als JSON umgewandelt und transportiert.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen. delete(mixed $uri, mixed $body = null, array $headers = [], array $options = []): Response
Senden Sie eine HTTP -Anforderung und geben Sie die Antwort zurück:
$ response = Hyper:: delete ( ' https://example.com/fruit ' , ' apples ' );
$ response = $ hyper -> delete ( ' /v1/people/1 ' );$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$body ist die optionale Nutzlast. Wenn Sie ein Array angeben, wird es als JSON umgewandelt und transportiert.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen. call(string $method, mixed $uri, mixed $body, array $headers, array $options): Response
Senden Sie eine generische HTTP -Anforderung, indem Sie die method als erstes Argument angeben.
// 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 ist das HTTP -Verb. Z.B. GET oder etwas, das nicht Teil des Standards ist.$uri ist eine Zeichenfolge oder ein Uri . Wenn die Zeichenfolge nicht absolut ist, wird sie an den Basis -URI angehängt.$body ist die optionale Nutzlast. Wenn Sie ein Array angeben, wird es als JSON umgewandelt und transportiert.$headers ist eine optionale Reihe von Header (indiziert mit dem Header -Namen), das mit allen globalen Headern zusammengeführt wird.$options ist eine optionale Reihe von Guzzle -Client -Optionen. Methoden, die aus dem RexlabsHyperHttpMessageRequest Object verfügbar sind:
Geben Sie das Uriinterface -Objekt zurück, das die URI/URL für diese Anfrage zusammenfasst.
Geben Sie das HTTP -Methodenverb für diese Anfrage zurück.
Eine Reihe von Kopfzeilen für diese Request zurückerhalten
Geben Sie eine Curl-Anforderung (String) zurück, die für das Ausführen aus der Befehlszeile geeignet ist. Nützlich für Debugging -Anfragen.
Methoden, die aus dem RexlabsHyperHttpMessageResponse Antwortobjekt verfügbar sind:
Geben Sie das RexlabsHyperHttpMessageRequest -Objekt zurück, das der Response zugeordnet ist
Geben Sie eine Curl-Anforderung (String) zurück, die für das Ausführen aus der Befehlszeile geeignet ist. Nützlich für Debugging -Anfragen.
Geben Sie den HTTP -Statuscode für diese Response zurück. Z.B. 200
Geben Sie den mit dem Statuscode zugeordneten HTTP -Vernunft -Phrase zurück. Z.B. "OK"
Gibt true zurück, wenn dies eine JSON -Antwort ist.
Konvertiert eine JSON -Antwort in ein Array und gibt das Array zurück.
Konvertiert eine JSON -Antwort in ein ArrayObject
Jedes Response hat alle Methoden und Funktionen der ArrayObject -Klasse aus dem rexlabsarray-object Paket.
Dies bedeutet basierend auf der folgenden Antwortnutzlast:
{
"books" : [
{
"id" : 1 ,
"title" : " 1984 " ,
"author" : " George Orwell "
},
{
"id" : 2 ,
"title" : " Pride and Prejudice " ,
"author" : " Jane Austen "
}
]
}Sie können die folgenden Funktionen ausführen:
$ 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" ;
}Sie können auch anrufen:
$ obj = $ response -> toObject (); // Instance of Arraybject Setzen Sie die Standardkonfiguration für alle Clients (Standardeinstellungen nach [])
Hyper:: setDefaultConfig ( $ config );Setzen Sie die Konfiguration für diesen Client (Werte überschreiben / verschmelzen mit Standard))
$ client = Hyper:: make ( $ config ); Legen Sie den Standardprotokoll fest, der von allen Clients verwendet wird, die keine bereitstellen.
Muss LoggerInterface implementieren (Standardeinstellungen zu NullLogger )
Hyper:: setDefaultLogger ( $ logger );Protokollieren Sie die Curl -Zeichenfolge für alle Anforderungen (erfordert einen Logger -Satz).
$ config = [
' log_curl ' => true ,
]; Stellen Sie die Konfiguration ein, die an den zugrunde liegenden GuzzleClient übergeben wurde
$ config = [
' guzzle ' => [
' verify ' => false ,
],
];
// Set for all clients
Hyper:: setDefaultConfig ( $ config );
// Set for one client
$ client = Hyper:: make ( $ config );Tests ausführen:
composer testsUm den Berichterstattungsbericht auszuführen:
composer coverage Der Deckungsbericht wird an ./tests/report/index.html ausgegeben
Hyper ermöglicht eine Erweiterung für benutzerdefinierte Clients von:
MyHyperSubclass gibt die richtige Instanz zurück, die von MyHyperSubclass erstellt wurdeHyper gibt die richtige Instanz zurück, die von Hyper erstellt wurdeprotected static function makeClient um die Client -Klasse anzupassen (z. B. new Client durch new MyClient ersetzen).protected static function makeConfig , um die Standard -Client -Konfiguration anzupassenprotected static function makeGuzzleConfig um den Standard -Guzzle -Client anzupassenprotected static function getBaseUri um dem Client eine Standard -Base_uri bereitzustellen Beiträge sind willkommen. Bitte geben Sie eine Pull-Request ein oder erstellen Sie ein Problem. Ihr eingereichter Code sollte mit PSR-1/PSR-2-Standards formatiert werden.