내용

    서버 응답 422 Unprocessable Entity

    HTTP 상태 코드 422 (처리할 수 없는 엔티티) 정의 및 적용

    HTTP 상태 코드 422는 서버가 요청의 내용을 이해했지만 의미론적 오류로 인해 이를 처리할 수 없음을 나타냅니다. 이는 클라이언트가 서버에 잘못된 데이터를 전송했을 때 발생하며, 적절한 수정이 필요합니다.

    422 - Unprocessable Entity

    상태 코드 422의 의미

    • 서버가 요청의 내용은 이해했지만 처리할 수 없는 경우에 사용됩니다.
    • 의미론적 오류가 발생하여 요청을 완료할 수 없습니다.

    오류 발생 상황

    1. 잘못된 데이터 형식
    2. 필수 필드 누락
    3. 지원되지 않는 필드 값

    HTTP 상태 코드 422의 실제 사용 사례

    사례 1: 양식 유효성 검사 오류

    클라이언트가 양식 데이터를 서버에 제출할 때, 데이터가 유효하지 않으면 서버는 422 상태 코드를 반환합니다.

    • 클라이언트가 잘못된 형식으로 데이터를 제출합니다.
    • 서버는 422 코드와 함께 오류 설명을 응답합니다.

    사례 2: API 데이터 처리

    서버가 들어오는 데이터를 처리할 수 없는 경우에도 422 코드가 반환됩니다.

    • 서버가 수신한 데이터에 오류가 있을 때 발생합니다.
    • 응답에 구체적인 데이터 오류가 포함됩니다.

    사례 3: 파일 작업

    사용자가 지원되지 않는 형식의 파일을 업로드하려고 할 때도 422 오류가 발생합니다.

    • 잘못된 형식의 파일을 업로드하려고 할 때 서버가 오류를 반환합니다.
    • 서버는 오류의 원인을 설명하는 응답을 보냅니다.

    상태 코드 422를 유발하는 오류 수정 방법

    JavaScript에서 오류 수정

    아래 코드는 오류를 발생시키는 예입니다.

    const data = { name: "" }; // 필수 필드 누락
    fetch('/api/endpoint', {
        method: 'POST',
        body: JSON.stringify(data),
        headers: { 'Content-Type': 'application/json' }
    });

    다음과 같이 코드를 수정하여 오류를 방지할 수 있습니다.

    const data = { name: "John" }; // 필수 필드 추가

    Python에서 오류 수정

    아래는 잘못된 요청의 예입니다.

    import requests
    response = requests.post('/api/endpoint', json={'name': ''}) # 필수 필드 누락

    데이터 유효성을 검사하여 오류를 예방할 수 있습니다.

    if not name: 
        raise ValueError("Name is required")

    PHP에서 오류 수정

    오류가 있는 API 호출의 예입니다.

    $data = ['name' => ''];
    $response = $client->post('/api/endpoint', ['json' => $data]); // 필수 필드 누락

    서버에서 요청을 올바르게 처리하도록 설정할 수 있습니다.

    if (empty($data['name'])) {
        http_response_code(422);
        echo json_encode(['error' => 'Name is required']);
    }

    HTTP 상태 코드 422 발생 방지 권장 사항

    • 클라이언트 측 데이터 유효성 검사 수행
    • API 요구 사항을 명확히 문서화
    • 오류 로그를 남겨 진단을 용이하게 함