415 Unsupported Media Type: 원인과 해결 방법
1. 415 Unsupported Media Type이란?
415 Unsupported Media Type은 서버가 클라이언트가 보낸 요청 본문의 Content-Type
을 지원하지 않을 때 반환되는 HTTP 상태 코드입니다. 주로 API 요청에서 잘못된 데이터 형식이 전송되었을 때 발생합니다.
2. 주요 원인
- 잘못된 Content-Type 헤더: 클라이언트가
Content-Type
을 올바르게 지정하지 않았을 때.
- 서버의 미지원 형식: 서버가 특정 파일 형식이나 데이터 형식을 처리할 수 없을 때.
- 인코딩 문제: 요청 본문이 서버가 예상하지 못한 방식으로 인코딩된 경우.
3. 415 에러의 영향
이 에러는 클라이언트가 서버에 데이터를 제대로 전송하지 못했음을 나타내며, 다음과 같은 문제가 발생할 수 있습니다:
- API 요청 실패: 서버가 클라이언트 요청을 처리하지 못함.
- 사용자 경험 저하: 서비스가 의도대로 작동하지 않음.
4. 해결 방법
1) 올바른 Content-Type 헤더 설정
클라이언트가 요청 헤더에서 올바른 Content-Type
을 설정해야 합니다. 예를 들어:
Content-Type: application/json
JSON 데이터를 전송할 때는 application/json
, 파일 업로드 시에는 multipart/form-data
를 사용합니다.
2) 서버 설정 확인
서버가 요청된 Content-Type
을 처리할 수 있도록 설정을 수정합니다. 예를 들어:
- Express.js: JSON 데이터를 처리하도록 미들웨어 추가.
const express = require('express');
const app = express();
app.use(express.json()); // JSON 요청 본문 처리
app.post('/data', (req, res) => {
res.send("데이터 처리 성공");
});
app.listen(3000, () => console.log('서버가 실행 중입니다.'));
3) 클라이언트 요청 본문 확인
클라이언트에서 요청 본문이 올바르게 인코딩되었는지 확인합니다. 예를 들어, JSON 형식이 유효하지 않거나 누락된 필드가 있을 경우 에러가 발생할 수 있습니다.
4) API 문서 확인
서버가 지원하는 Content-Type
형식을 API 문서에서 확인하고 요청을 조정합니다.
5. 예제 코드
Python Flask에서 415 에러를 처리하는 예제:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/process', methods=['POST'])
def process_data():
if request.content_type != 'application/json':
return jsonify({"error": "415 Unsupported Media Type"}), 415
data = request.json
return jsonify({"message": "요청 처리 성공", "data": data})
if __name__ == '__main__':
app.run(debug=True)
6. 관련 HTTP 상태 코드
- 400 Bad Request: 요청 형식이 잘못되었을 때.
- 406 Not Acceptable: 요청된 리소스의 콘텐츠가 클라이언트의 요구에 맞지 않을 때.
- 500 Internal Server Error: 서버 내부 오류 발생 시.