서버 응답 415 Unsupported Media Type
HTTP 상태 코드 415 (지원되지 않는 미디어 유형)
HTTP 상태 코드 415는 서버가 지원하지 않는 미디어 유형으로 인해 요청을 처리하지 않겠다고 거부할 때 발생합니다. 이는 클라이언트가 서버가 처리할 수 없는 형식으로 데이터를 전송하려 할 때 발생할 수 있습니다. 이 글에서는 HTTP 415 상태 코드의 의미와 이를 해결하는 방법에 대해 자세히 설명합니다.
상태 코드 415 발생 원인
- 잘못된 Content-Type 헤더
다양한 API는 서로 다른 데이터 형식을 지원하며, 전송된 Content-Type 헤더가 예상 형식과 일치하지 않으면 서버는 415 상태 코드를 반환합니다.
- 형식 지원 부족
서버가 전송된 데이터 형식을 지원하지 않을 수도 있습니다. 예를 들어, API가 JSON을 기대하고 클라이언트가 XML을 전송하면 문제가 발생합니다.
- 데이터 인코딩 오류
데이터를 잘못 인코딩하거나 요청 구조에 오류가 있을 경우에도 415 상태 코드가 반환될 수 있습니다.
실제 사례
- JSON 형식
예: 클라이언트가 JSON을 전송하지만 Content-Type 헤더를 text/plain으로 설정한 경우, 서버는 요청을 처리할 수 없어 415를 반환합니다.
- XML 형식
예: 클라이언트가 XML 형식으로 데이터를 전송하려고 하지만 서버가 JSON 형식을 기대하는 경우, 이 또한 415 상태 코드가 반환됩니다.
- 유효하지 않은 파일
예: API가 JPEG 형식의 이미지를 기대하는데 클라이언트가 PNG 파일을 잘못된 헤더와 함께 전송하면, 서버는 415를 반환합니다.
서버 오류 415 수정 방법
다양한 프로그래밍 언어에서 HTTP 415 상태 코드를 수정하는 방법을 살펴보겠습니다.
프로그래밍 언어 | 코드 예제 |
---|---|
JavaScript (Node.js) |
const axios = require('axios'); axios.post('https://example.com/api', data, { headers: { 'Content-Type': 'application/json' } }) .then(response => { console.log(response.data); }) .catch(error => { if (error.response && error.response.status === 415) { console.error('지원되지 않는 미디어 유형: Content-Type 헤더를 확인하세요'); } }); |
Python (Requests) |
import requests headers = { 'Content-Type': 'application/json' } response = requests.post('https://example.com/api', json=data, headers=headers) if response.status_code == 415: print('지원되지 않는 미디어 유형: Content-Type 헤더를 확인하세요') |
Java (HttpURLConnection) |
import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; public class HttpClient { public static void main(String[] args) { try { URL url = new URL("https://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); OutputStream os = connection.getOutputStream(); os.write(data.getBytes()); os.flush(); os.close(); if (connection.getResponseCode() == 415) { System.out.println("지원되지 않는 미디어 유형: Content-Type 헤더를 확인하세요"); } } catch (Exception e) { e.printStackTrace(); } } } |
상태 코드 415는 클라이언트와 서버 간의 데이터 형식 불일치로 인해 발생하며, 이를 해결하기 위해서는 적절한 Content-Type 헤더를 설정하고 서버가 지원하는 형식을 확인하는 것이 중요합니다. 위의 예제를 통해 각 프로그래밍 언어에서 어떻게 이러한 오류를 처리할 수 있는지 알 수 있습니다.