

서버 개발 참여 경험과 학습 기록
프로젝트 참여 경험
서버 개발 프로젝트에 참여하여 API 명세서를 작성하고 iOS, Android 팀과 공유 및 피드백 과정을 거쳤습니다.
피드백 답변을 받아보니 명세서 작성이 명확하지 않거나, 정보 전달 과정에서 혼동이 생겼을 가능성을 깨닫고, 이를 계기로 HTTP 상태코드에 대한 학습과 정리를 진행하였습니다.
HTTP 상태코드 (HTTP Status Code)
핵심 개념
HTTP 상태코드는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답을 나타내는 코드로, 요청의 성공 또는 실패 여부를 판단할 수 있습니다.
HTTP 상태코드 분류
- 1xx (Informational): 조건부 응답
- 2xx (Successful): 성공
- 3xx (Redirection): 리다이렉션 완료
- 4xx (Client Error): 요청 오류
- 5xx (Server Error): 서버 오류
| 상태 코드 | 요약 | 설명 |
|---|
| 100 | Continue | 클라이언트가 서버로 보낸 요청에 문제가 없음을 의미하며, 다음 요청을 이어서 보내도 됩니다. |
2xx (Successful): 성공
| 상태 코드 | 요약 | 설명 |
|---|
| 200 | OK | 요청이 성공적으로 수행되었음을 의미하며, 주로 GET 요청에 대한 응답으로 사용됩니다. |
| 201 | Created | 요청이 성공적으로 수행되었으며, 새로운 리소스가 생성되었음을 의미합니다. (주로 POST 요청) |
| 204 | No Content | 요청이 성공적으로 수행되었지만, 응답에 보낼 데이터가 없음을 의미합니다. (주로 DELETE 요청) |
3xx (Redirection): 리다이렉션 완료
| 상태 코드 | 요약 | 설명 |
|---|
| 301 | Moved Permanently | 요청한 리소스의 URI가 영구적으로 변경되었음을 의미합니다. |
| 302 | Found | 요청한 리소스의 URI가 일시적으로 변경되었음을 의미합니다. |
| 304 | Not Modified | 리소스가 수정되지 않았음을 의미하며, 캐싱된 리소스를 사용합니다. |
| 307 | Temporary Redirect | 302와 유사하나, HTTP 메서드를 유지해야 합니다. |
| 308 | Permanent Redirect | 301과 유사하나, HTTP 메서드를 유지해야 합니다. |
4xx (Client Error): 요청 오류
| 상태 코드 | 요약 | 설명 |
|---|
| 400 | Bad Request | 잘못된 문법 등으로 인해 요청이 유효하지 않음을 의미합니다. |
| 401 | Unauthorized | 인증이 필요한 리소스를 비인증 사용자가 요청했음을 의미합니다. |
| 403 | Forbidden | 클라이언트가 콘텐츠에 접근할 권한이 없음을 의미합니다. (서버가 클라이언트 정보를 알고 있음) |
| 404 | Not Found | 요청한 리소스가 존재하지 않음을 의미합니다. |
| 405 | Method Not Allowed | 리소스에 적합하지 않은 HTTP 메서드를 사용했음을 의미합니다. |
| 429 | Too Many Requests | 클라이언트가 지정된 시간에 너무 많은 요청을 보냈음을 의미합니다. |
5xx (Server Error): 서버 오류
| 상태 코드 | 요약 | 설명 |
|---|
| 500 | Internal Server Error | 서버에 오류가 발생하여 요청을 처리할 수 없음을 의미합니다. |
| 503 | Service Unavailable | 서버가 유지보수 또는 과부하로 요청을 처리할 준비가 되지 않았음을 의미합니다. |
| 504 | Gateway Timeout | 서버가 액세스 중인 다른 서버로부터 적시에 응답을 받지 못했음을 의미합니다. |
HTTP 상태코드의 실제 활용 사례
- 200 OK: GET 요청으로 사용자 프로필 정보를 성공적으로 가져왔을 때 사용.
- 201 Created: POST 요청으로 새로운 계정을 생성한 후, 생성된 계정의 정보를 반환할 때 사용.
- 204 No Content: DELETE 요청으로 데이터를 삭제했을 때 반환 데이터가 없을 경우 사용.
- 304 Not Modified: 클라이언트 캐시된 리소스를 그대로 사용할 수 있을 때 사용.
- 400 Bad Request: 클라이언트의 잘못된 입력(예: 필수 입력값 누락)으로 요청이 처리되지 않을 때 사용.
- 401 Unauthorized: 인증되지 않은 사용자가 리소스에 접근하려 할 때 사용.
- 403 Forbidden: 권한이 없는 사용자가 리소스에 접근하려 할 때 사용.
- 404 Not Found: 요청한 리소스가 없을 때 사용.
- 500 Internal Server Error: 예기치 못한 서버 에러가 발생했을 때 사용.
HTTP 상태코드와 RESTful API 설계
- 상태코드는 RESTful API 설계에서 클라이언트-서버 간 의사소통을 명확히 하는 데 중요한 역할을 합니다.
- 올바른 상태코드를 사용하는 것은 API 사용자가 오류 원인을 파악하고 문제를 해결하는 데 도움을 줍니다.
추가 학습 자료
상태코드 사용 시 주의사항
- 상태코드의 오용 방지: 200 OK를 남용하지 말고, 상황에 맞는 상태코드를 사용하는 것이 중요합니다.
- 5xx 에러 관리: 5xx 상태코드는 사용자 경험에 큰 영향을 미칠 수 있으므로, 로그 기록 및 알림 시스템을 활용해 빠르게 대응해야 합니다.
- 표준 준수: 비표준 상태코드는 혼동을 초래할 수 있으므로, 가능한 한 표준 상태코드를 따르도록 합니다.