> 백엔드 개발 > PHP 튜토리얼 > API를 테스트할 때 Guzzle에서 처리되지 않은 예외를 처리하는 방법은 무엇입니까?

API를 테스트할 때 Guzzle에서 처리되지 않은 예외를 처리하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-02 06:27:02
원래의
1036명이 탐색했습니다.

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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿