API をテストするときに Guzzle で未処理の例外を処理する方法は?

Patricia Arquette
リリース: 2024-11-02 06:27:02
オリジナル
916 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!