Zum Ausführen von Anfragen mit guzzlehttp sind grundsätzlich folgende Schritte notwendig:
•Antwort verarbeiten (gewünschte Daten aus Antwort auslesen, Fehler behandeln)
Schema
// Client initialisieren
$client = new Client(
[
'base_uri' => 'http://example.org/jobrouter/api/rest/v2/',
'cookies' => true
]
);
try {
// Anfrage senden
$response = $client->get(
'http://example.org/jobrouter/api/rest/v2/path/to/some/get/route'
);
$body = $response->getBody();
// Weitere Informationen aus der Antwort auslesen ...
} catch (Exception $e) {
echo "Fehler bei der Ausführung: " . $e->getMessage();
}
Zum Ausführen von Anfragen stellt guzzlehttp die Klasse Client bereit. Beim Initialisieren des Clients können einige Optionen angegeben werden:
•base_uri – API-URI des Servers. Tragen Sie hier die URL zur JobRouter-REST-API ein. Beim Absenden von Anfragen wird die URL der angeforderten Ressource relativ zu dieser Basis-URL angegeben.
•http_errors – Diese Option ist standardmäßig aktiviert (true). Somit werden Antworten mit HTTP-Fehler-Codes (HTTP-Status-Code zwischen 400 und 500) als Exceptions geworfen. Deaktivieren Sie die Option, wenn Sie die Fehlermeldungen in den Antworten selbst behandeln möchten.
•verify – Diese Option ist standardmäßig aktiviert (true). Somit wird bei der Anfrage der Server anhand seines Zertifikats verifiziert (SSL verification). Wenn Sie JobRouter mit HTTPS-Protokoll verwenden, sollte diese Option auf den Pfad zur Zertifikatdatei des Servers im PEM-Format gesetzt sein ('verify' => '/path/to/my/certificate/cert.pem'). Alternativ können Sie den Pfad in der php.ini als openssl.cafile eintragen. Deaktivieren Sie die Option nur, wenn Sie Anfragen an ein internes Testsystem versenden.
•cookies – Diese Option hat keine Standardwert. Setzen Sie sie auf true, wird für den Client und nachfolgende Anfragen eine Cookie-Session benutzt.
•sink – Bestimmt wie und wo die Antwort einer Anfrage gespeichert wird (z. B. als Datei auf dem Dateisystem). Diese Option wird beim Herunterladen von Dateien verwendet.
Nach dem Initialisieren des Clients können die Optionen nicht mehr verändert werden. Information zur weiteren Optionen entnehmen Sie bitte der guzzlehttp-Dokumentation.
Zum Senden der HTTP-Anfragen steht die Methode request() zur Verfügung. Außerdem können auch die HTTP-Methoden als Methodenaliase verwendet werden, z. B.:
•$client->get('<Ressource-URL>') für GET-Routen,
•$client->post('<Ressource-URL>', $postData) für POST-Routen, usw.
Benötigt die Anfrage zusätzliche Daten, werden diese in dem Methodenaufruf mitgeschickt.
Die Anfrage-Methoden liefern ein Response-Objekt zurück. Folgende Methoden stehen für dieses Objekt zur Verfügung:
•getStatusCode(): HTTP-Status-Code der Antwort ermitteln
•getBody(): In der Antwort zurückgelieferte Daten ermitteln
Haben Sie den Client so initialisiert, dass keine Exceptions bei Fehlern geworfen werden (http_errors => false), können Sie die Fehlermeldungen aus dem errors-Array im Body der Antwort auslesen.
$client = new Client(
[
'base_uri' => 'http://example.org/jobrouter/api/rest/v2/',
'cookies' => true,
'http_errors' => false,
]
);
// Nicht-existierenden Benutzer authentifizieren
$response = $client->post('application/sessions', [
'json' => [
'username' => 'nonexisting',
'password' => 'mypassword',
],
]);
// Fehlermeldung ermitteln
echo "Code: " . $response->getStatusCode() . "\n";
$responseData = json_decode($response->getBody(), true);
$errors = $responseData['errors'];
foreach($errors as $error) {
echo $error[0] . "\n";
}