2xx: 클라이언트의 요청을 성공적으로 처리함ex) 200 OK, 201 Created, 202Accepted, 204 No Content
200 OK: 요청 성공
201 Created: 요청을 성공해서 새로운 리소스가 생성됨
202 Accepted: 요청이 접수되었으나 처리가 완료되지 않음
배치 처리 같은 곳에서 사용. ex) 요청 접수 후 2시간 뒤에 배치 프로세스가 요청을 처리함.
204 No Content: 요청은 성공적으로 수행했지만, 페이로드에 보낼 데이터가 없음
서버의 응답 결과가 필요 없는 경우에 주로 사용. (성공만 인식하면 됨)
3xx: 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요ex) 300 Multiple Choices, 301 Moved Permanently, 302 Found, 303 See other, 304 Not Modified, 307 Temporary Redirect, 308 Permanent Redirect
웹 브라우저는 3xx 응답의 결과에 Location이 있으면 해당 Location으로 자동 이동한다. (redirect)
301, 308 (영구적 redirection)
리소스의 URI가 영구적으로 이동
301은 요청 메서드의 본문이 제거될 수 있고, GET으로 바뀜. (308은 그렇지 않음)
302, 307, 303 (일시적 redirection)
리소스의 URI가 일시적으로 변경
302: 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음.
307: 리다이렉트시 메서드와 본문 유지
303: 요청 메서드 GET으로 변경
PRG: Post/ Redirect/ Get (일시적인 redirection의 예시) - Post 요청이 들어왔을때 302 상태코드로 새로운 창으로 redirection을 함(GET 메서드 사용). 새로 고침 등으로 인한 문제가 발생하지 않음.
300, 304 (기타 redirection)
300 Multiple Choices: 실제로 거의 사용하지 않음.
304 Not Modified: 캐시를 목적으로 사용. 로컬 PC의 캐시로 redirection함.
4xx: 클라이언트 오류
클라이언트의 요청의 잘못된 문법 등으로 요청 수행 불가능.
400 Bad Request
ex) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때
401 Unauthorized
인증되지 않음. (로그인 x)
인증(Authentication): 본인이 누구인지 확인 (로그인)
인가(Authorization): 권한 확인
403 Forbidden
서버가 요청을 이해했지만 승인 거부 (로그인 o, 권한 x)
ex) 권한이 불충분한 경우 (로그인은 했지만 권한이 없을때) .
404 Not Found
요청 리소스가 서버에 없음.
해당 리소스를 숨기고 싶을 때에도 사용함.
5xx: 서버 오류
서버에 문제가 있을때 발생
500 Internal Server Error : 서버 내부 문제
503 Service Unavailable: 서비스 이용 불가 (복구 예상 시간도 보낼 수 있음)