0Pricing
PHP Academy · 강의

API 응답 및 오류 처리

HTTP 상태 코드를 확인하고 오류를 처리하며 API 페이로드를 해석합니다.

API 응답 및 오류 처리은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

HTTP 상태 코드 확인

응답 본문을 처리하기 전에 항상 HTTP 상태 코드를 확인하세요.

<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
    throw new RuntimeException("API error: HTTP $statusCode");
}

JSON 응답 구문 분석

JSON 본문을 디코딩하고 구문 분석 오류를 처리하세요.

<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP array

오류 응답 본문

API는 4xx 또는 5xx 응답에서도 본문에 오류 세부 정보를 포함하는 경우가 많습니다. 오류가 발생하면 항상 본문을 구문 분석하고 기록하세요.

<?php
if ($statusCode >= 400) {
    $err = json_decode($body, true);
    $msg = $err["message"] ?? "Unknown API error";
    throw new RuntimeException("API $statusCode: $msg");
}

cURL 전송 오류

네트워크 오류(DNS 실패, 시간 초과)는 HTTP 오류와 별개입니다. 먼저 curl_errno()를 확인한 다음 HTTP 상태를 확인하세요.

<?php
if (curl_errno($ch)) {
    throw new RuntimeException("Transport error: ".curl_error($ch));
}

도우미 함수로 감싸기

재사용할 수 있는 함수에 cURL 설정, 실행 및 오류 처리를 캡슐화하세요.

<?php
function httpGet(string $url, string $token): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => ["Authorization: Bearer $token"],
        CURLOPT_TIMEOUT        => 15,
    ]);
    $body   = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $errno  = curl_errno($ch);
    curl_close($ch);
    if ($errno) throw new RuntimeException(curl_strerror($errno));
    if ($status >= 400) throw new RuntimeException("HTTP $status");
    return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}

재시도 로직

일시적인 오류(503 서비스 이용 불가, 시간 초과)에는 재시도 제한과 지수 백오프를 구현하세요.

<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
    try {
        $data = httpGet($url, $token);
        break;
    } catch (RuntimeException $e) {
        if ($attempt === $maxRetries - 1) throw $e;
        sleep(2 ** $attempt);
    }
}

요청 제한 헤더

많은 API가 요청 제한 헤더인 X-RateLimit-Remaining과 X-RateLimit-Reset을 포함합니다. 제한에 도달하지 않도록 이 헤더를 읽으세요.

<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response string

응답 캐싱

불필요한 네트워크 호출을 피하려면 API 응답을 캐시하세요. 데이터 최신성 요구 사항에 맞는 TTL을 사용해 Redis 또는 APCu에 응답을 저장하세요.

API 호출 기록

디버깅을 돕고 운영 환경에서 API 상태를 모니터링할 수 있도록 요청 URL, 메서드, 상태 코드 및 지연 시간을 기록하세요.

시간 초과를 오류로 처리하기

cURL 시간 초과(CURLE_OPERATION_TIMEDOUT)는 HTTP 오류가 아닌 전송 오류입니다. 이를 명시적으로 처리하세요.

SSL 인증서 오류

인증서 검증 실패(CURLE_SSL_CACERT)는 서버 인증서를 신뢰할 수 없다는 뜻입니다. CA 인증서 묶음을 업데이트하고, 절대로 검증을 비활성화하지 마세요.

요약

항상 cURL 오류 번호를 먼저 확인한 다음 HTTP 상태를 확인하세요. 오류 본문을 구문 분석하세요. 로직을 재사용할 수 있는 함수로 감싸세요. 일시적인 실패에는 재시도를 구현하세요.

빠른 확인

cURL 오류 번호와 HTTP 상태 중 무엇을 먼저 확인해야 하나요?

자주 묻는 질문

“API 응답 및 오류 처리” 강의는 무료인가요?

네 — “API 응답 및 오류 처리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“API 응답 및 오류 처리”에서 뭘 배우나요?

HTTP 상태 코드를 확인하고 오류를 처리하며 API 페이로드를 해석합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“API 응답 및 오류 처리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. JSON 인코딩 및 디코딩
  2. cURL로 HTTP 요청 보내기
  3. API 응답 및 오류 처리
  4. 간단한 API 클라이언트 만들기
← PHP Academy(으)로 돌아가기