티스토리 뷰
HTTP Status code는 http 요청에 대한 상태를 알려주는 코드입니다.
굉장히 많은 status code가 있는데, 모든 status code가 중요한 것은 아니라서 자주 쓰이는 코드만 정리해보려고 합니다.
구조
1~5로 시작하고 3자리 숫자로 이루어져있습니다.
맨 앞 숫자의 의미
- 1xx(Information, 정보) : 요청을 받았으며 처리 진행중
- 2xx(Successful, 성공) : 요청을 성공적으로 받았으며 정상적으로 처리
- 3xx(Redirection, 리다이렉션) : 요청 완료를 위해 추가 행동이 필요
- 4xx(Client Error, 클라이언트 오류) : 클라이언트 오류로 인해 요청을 처리할 수 없음
- 5xx(Server Error, 서버 오류) : 서버 오류로 인해 서버가 요청을 처리할 수 없음
1XX
요청에 성공했으며, 처리가 진행중이라고 알려주는 코드입니다.
잘 사용되지 않아 상세코드는 생략하겠습니다.
2XX
요청이 성공했음을 나타냅니다.
200 OK
요청 정상 처리를 나타냅니다.
201 Created
요청이 성공했으며, 새로운 리소스가 생성되었음을 나타냅니다.
즉, 요청으로 인해 서버에 새로운 데이터가 생성되었을 때 사용합니다.
202 Accepted
요청이 접수되었으나 처리가 완료 되지 않았음을 나타냅니다.
예를 들어 서버에 스케쥴러나 배치가 돌아간 후에 응답을 줄 수 있는 경우에 사용합니다.
204 No Content
요청이 성공했지만 돌려보낼 응답(body)이 없을 때 사용합니다.
리소스 저장 등 성공 여부만 확인하면 되는 요청일 때 사용합니다.
3XX
페이지 리다이렉션과 관련있는 코드입니다.
리소스의 위치가 변경되어서 클라이언트 단에서 추가 조치(리다이렉션)이 필요할 때 사용합니다.
3XX 응답과 함께 Location 헤더에 바뀐 리소스 위치를 넣어주면 웹브라우저가 자동으로 리다이렉트합니다.
자주 쓰이는 것은 아니라서 생략하겠습니다.
4XX
요청에 클라이언트 오류가 있을 때 발생합니다.
이 오류가 발생했다면 클라이언트 상에서 구문 오류가 있거나 요청 파라미터나 페이로드가 잘못되었는지 확인해보아야합니다.
400 Bad Request
클라이언트 오류로 인해서 요청을 처리할 수 없음을 나타냅니다.
구문 오류가 없는지, 요청 스펙(header, query string, body등)에 맞게 요청을 작성하였는지 확인해보아야 합니다.
401 Unauthorized
클라이언트 신원이 확인되지 않았을 때 발생합니다.
만료되거나 올바르지 않은 JWT를 보내는 등 사용자를 인증할 수 없는 경우입니다.
403 Forbidden
요청은 접수되었으나 서버에서 요청 수행을 거부했을 때 발생합니다.
주로 신원은 확인되었지만 접근 권한이 없는 경우입니다.
404 Not Found
요청 리소스를 찾을 수 없을 때 발생합니다.
5XX
서버 측에서 오류가 있을 때 발생합니다.
500 Internal Server Error
서버 내부 문제로 오류가 발생했음을 나타냅니다.
서버는 클라이언트에서 제어할 수 없기 때문에 코드를 세분화 하여도 클라이언트에서 대응할 수 있는 방법이 거의 없습니다.
그래서 대부분의 서버 오류는 500으로 뭉뚱그려 처리됩니다.
503 Service Unavailable
서버가 이용 불가 상태라 요청을 처리할 수 없을 때 발생합니다.
예를 들어 서버가 다운되는 등의 이유가 있을 수 있습니다.
(추가) X00 코드의 의미
X00 코드는 X01~XXX 코드 내용을 모두 포함하는 의미입니다.
예를 들어 200 OK는 201 Created, 202 Accepted, 204 No Content의 의미를 모두 포함합니다.
응답이 X00가 아니라 세부적으로 나누어 오는 것은 서버에서 얼마나 세분화해서 응답 코드를 짜주냐에 따라 달라지게 됩니다.
또 http 스펙(버전-1.0~3.0) 환경에 따라 이용 가능한 코드범위가 다를 수 있습니다.
이 때 클라이언트가 이해할 수 없는 코드라면 상위코드인 X00번 코드로 이해하고 처리합니다.
감사합니다.
Ref.
인프런 - 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)
'기타' 카테고리의 다른 글
클라이언트 MVC에 대해서 + MV* 아키텍처 (0) | 2023.04.24 |
---|---|
[CS] 동기/비동기, 블로킹/논블로킹, 동시성/순차성, 싱글 스레드/멀티 스레드 총 정리 (0) | 2023.04.09 |
코드 커버리지(Code Coverage)란? (0) | 2022.12.10 |
클라이언트의 리액티브 프로그래밍(Reactive programming) - 데이터 바인딩과 Rx (0) | 2022.12.03 |
[SOMA] 소프트웨어마에스트로 13기 수료 후기 (2) | 2022.12.01 |
- Total
- Today
- Yesterday
- swift
- RX
- 프로그래머스
- Flutter
- 코디네이터 패턴
- TestCode
- design pattern
- MVVM
- coordinator pattern
- MVC
- SwiftUI
- notion
- 노션
- combine
- 리액티브 프로그래밍
- 아키텍쳐 패턴
- Bloking/Non-bloking
- 소프트웨어마에스트로
- programmers
- DocC
- ios
- GetX
- SWM
- 비동기/동기
- Flux
- healthkit
- Architecture Pattern
- reactive programming
- Swift Concurrency
- MVI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |