Guzzle로 API를 테스트하는 동안 예외를 포착하는 것은 어려울 수 있습니다. 이 문서에서는 이 문제를 다루고 200이 아닌 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!