Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit nicht behandelten Ausnahmen in Guzzle beim Testen von APIs um?

Wie gehe ich mit nicht behandelten Ausnahmen in Guzzle beim Testen von APIs um?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 06:27:02989Durchsuche

How to Handle Unhandled Exceptions in Guzzle When Testing APIs?

Unbehandelte Ausnahmen mit Guzzle lösen

Das Abfangen von Ausnahmen beim Testen von APIs mit Guzzle kann eine Herausforderung sein. Dieser Artikel befasst sich mit diesem Problem und bietet Lösungen zum Abrufen von Antworten mit Nicht-200-HTTP-Codes.

Im Beispielcode werden Ereignis-Listener verwendet, um bestimmte HTTP-Codes zu verarbeiten, es werden jedoch weiterhin Ausnahmen ausgelöst. Um dieses Problem zu lösen, besteht eine Möglichkeit darin, Ausnahmen anhand des HTTP-Statuscodes zu behandeln.

Ausnahmen anhand des HTTP-Statuscodes behandeln

Für Guzzle 3 und Guzzle 5.3 ermöglicht das Deaktivieren von Ausnahmen die manuelle Behandlung aller Status Codes. Setzen Sie einfach 'Exceptions' => false in den Client-Optionen.

Guzzle 3

$client = new \Guzzle\Http\Client($httpBase, array(
  'request.options' => array(
     'exceptions' => false,
   )
));

Guzzle 5.3

$client = new \GuzzleHttp\Client(['defaults' => [ 'exceptions' => false ]] );

Mit deaktivierten Ausnahmen, Der HTTP-Statuscode kann direkt aus der Antwort abgerufen werden.

$response = $request->send();
$statuscode = $response->getStatusCode();

Erwartete Statuscodes kann entsprechend gehandhabt werden:

if (200 === $statuscode) {
 // Do something
}
elseif (304 === $statuscode) {
  // Nothing to do
}
elseif (404 === $statuscode) {
  // Clean up DB or something like this
}
else {
  throw new MyException("Invalid response from api...");
}

Guzzle 6

In Guzzle 6 verwenden Sie 'http_errors' => false in den Client-Optionen:

$client = new \GuzzleHttp\Client(['http_errors' => false]);

Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht behandelten Ausnahmen in Guzzle beim Testen von APIs um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn