class Client extends HTTPClient

API-Client für HTTP-Anfragen

Diese Klasse stellt im wesentlichen die Methode Client::executeRequest() bereit. Diese Methode erstellt eine URI und führt den Request aus. Über die Konstanden können die gewünschten Anpassungen für die Ziel-Clients durchgeführt werden.

Constants

API_VERSION

Verwendete API-Version soweit diese in der URI Verwendung findet. Eine API-Version wird nach der Domain dem Pfad automatisch vorangestellt.

ACCEPTED_CONTENT

Erwarteter Inhaltstyp

RECURSIVE_DEPTH

Anzahl der Redirects die durchgeführt werden

Properties

protected ObjectMap $cookies \Alvine\Net\Http\Cookie der Verbindung
protected string $redirectStrategy

Methods

__construct(URI $uri)

Neuer Client

setRedirectStrategyClass(string $redirectStrategy)

Redirect-Strategie setzen

Response
executeRequest(string $path, array $acceptedStatusCode, string $method = \Alvine\Net\Http\RequestMethod::GET, RequestHeader $header = null, Body $body = null)

Requests ausführen

RequestHeader
createRequestHeader(RequestHeader $header = null)

Request-Header

checkMimeTypeOfResponse(Response $response, MediaType $expected)

Überprüfen des MimeTypes

Details

at line 79
__construct(URI $uri)

Neuer Client

Parameters

URI $uri URI auf den Hosts

at line 103
Client setRedirectStrategyClass(string $redirectStrategy)

Redirect-Strategie setzen

$client->setRedirectStrategy('\Alvine\Infrastructure\Api\Rest\RedirectStrategy');

Parameters

string $redirectStrategy Name der Klasse incl.Namespace

Return Value

Client

at line 154
protected Response executeRequest(string $path, array $acceptedStatusCode, string $method = \Alvine\Net\Http\RequestMethod::GET, RequestHeader $header = null, Body $body = null)

Requests ausführen

Hilfsfunktion für die Übermittlung der Anweisungen an den Server. Das Standard-Format ist JSON. Dieses kann jedoch über die Konstante ACCEPTED_CONTENT in abgeleiteten Klassen überschrieben werden.

public function doSomething() {
  $param = ['?flag='.\Alvine\Types\Type::validateBoolean($all)];
  if($limit!==null) $param[] = 'limit='.(string) \Alvine\Types\Type::validateInteger($limit);

  $response = $this->executeRequest('/object/json'.\implode('&', $param), [\Alvine\Net\Http\StatusCode::HTTP_OK]);

  $result = @\json_decode($response->getBody(), true);
  $result = \Alvine\Types\Type::validateArray($result);
}

Die Übertragung von Daten mittels POST / PUT kann folgendermassen erfolgen

public function doSomething() {
  $data = ['key'=>'value'];
  $body = new \Alvine\Net\Http\Body($data->asJson(), 'application/json');
  $response = $this->executeRequest('/object/create', [\Alvine\Net\Http\StatusCode::HTTP_CREATED], \Alvine\Net\Http\RequestMethod::POST, $body);
  $json = (string) $response->getBody();
  $result = @\json_decode($json, true);
  $resultHelper = new \Alvine\Types\ArrayHelper($result);
}

Parameters

string $path Pfadangabe
array $acceptedStatusCode HTTP-Ergebniscodes
string $method HTTP-Methode
RequestHeader $header Header
Body $body |\null $body Inhalt bei POST / PUT

Return Value

Response Antwort des Servers

Exceptions

RedirectException zu viele Redirects
ConnectionFailedException Keine Verbindung möglich
ServerException Unspezifizierter Fehler
NotFoundException URI nicht gefunden

at line 228
protected RequestHeader createRequestHeader(RequestHeader $header = null)

Request-Header

Erstellt einen Request-Header. Diese Methode kann überschrieben werden, um den Request-Header zu manipulieren.

protected function createRequestHeader() {
  $header = parent::createRequestHeader();
  // Header erweitern
  return $header;
}

Parameters

RequestHeader $header Header

Return Value

RequestHeader Header

at line 277
protected Client checkMimeTypeOfResponse(Response $response, MediaType $expected)

Überprüfen des MimeTypes

Mit Hilfe dieser Methode lässt sich der MIME-Type der Antwort überprüfen. Sollte der Type nicht mit dem erwünschten Wert übereinstimmen, so wird eine Exception geworfen.

Parameters

Response $response Ergebnis des Requests
MediaType $expected Erwarteter MimeType

Return Value

Client

Exceptions

MIMETypeException falscher Mimetype