测试 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!