ホームページ  >  記事  >  バックエンド開発  >  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 ]] );

例外が無効になっている場合、 HTTP ステータス コードは応答から直接取得できます。

$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_errors' => を使用します。クライアントオプションで false:

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

以上がAPI をテストするときに Guzzle で未処理の例外を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。