서버 응답 422 Unprocessable Entity
HTTP 상태 코드 422 (처리할 수 없는 엔티티) 정의 및 적용
HTTP 상태 코드 422는 서버가 요청의 내용을 이해했지만 의미론적 오류로 인해 이를 처리할 수 없음을 나타냅니다. 이는 클라이언트가 서버에 잘못된 데이터를 전송했을 때 발생하며, 적절한 수정이 필요합니다.
상태 코드 422의 의미
- 서버가 요청의 내용은 이해했지만 처리할 수 없는 경우에 사용됩니다.
- 의미론적 오류가 발생하여 요청을 완료할 수 없습니다.
오류 발생 상황
- 잘못된 데이터 형식
- 필수 필드 누락
- 지원되지 않는 필드 값
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 요구 사항을 명확히 문서화
- 오류 로그를 남겨 진단을 용이하게 함