Heim > Artikel > Backend-Entwicklung > Wie gehe ich mit nicht behandelten Ausnahmen in Guzzle beim Testen von APIs um?
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.
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!