首页  >  文章  >  后端开发  >  测试 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn