首頁  >  文章  >  後端開發  >  測試 API 時如何處理 Guzzle 中未處理的例外狀況?

測試 API 時如何處理 Guzzle 中未處理的例外狀況?

Patricia Arquette
Patricia Arquette原創
2024-11-02 06:27:02917瀏覽

How to Handle Unhandled Exceptions in Guzzle When Testing APIs?

使用 Guzzle 解決未處理的異常

在使用 Guzzle 測試 API 時捕獲異常可能具有挑戰性。本文解決了這個問題,並提供了檢索非 200 HTTP 程式碼回應的解決方案。

範例程式碼中使用事件監聽器來處理特定的 HTTP 程式碼,但仍然會拋出異常。要解決此問題,一種選擇是透過 HTTP 狀態碼處理異常。

透過 HTTP 狀態碼處理異常

對於 Guzzle 3 和 Guzzle 5.3,停用異常允許手動處理所有狀態代碼。只需設定“例外”=>客戶端選項中為 false。

Guzzle 3

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

Guzzle 5.3

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

停用例外響應中獲取。

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

預期的狀態碼可以進行相應處理:

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

在Guzzle 6 中,使用'http_ors' =>客戶端選項中為false:

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

以上是測試 API 時如何處理 Guzzle 中未處理的例外狀況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn