(HTTP) HTTP 상태 코드

지식저장공간·2022년 11월 21일
0

HTTP

목록 보기
6/7
post-thumbnail

HTTP 상태 코드

HTTP 상태 코드는 서버가 클라이언트의 요청메시지에 대한 응답메시지를 보낼 때 스타트 라인에 포함하여 같이 보내고, 요청 처리 상태를 보여준다.

상태 코드의 분류를 알고 있으면 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하여도, 클라이언트는 상위 상태코드로 해석해서 처리 할 수 있다.

1xx: 요청이 수신되어 처리 중

1xx(Informational)

HTTP 100번대 상태코드는 거의 보기가 힘들다.

2xx: 요청 정상 처리

2xx(Successful)

200 OK : 주로 GET 메서드를 이용하여 조회하는데 사용

201 Created : 주로 POST메서드를 이용하여 새로운 리소스가 생성된다.
--> 컬렉션 : 서버가 리소스의 위치를 알고, 클라이언트는 리소스의 위치를 모른다.

202 Accepted : 요청이 접수되었으나 처리가 완료되지 않았다.
--> 요청 접수 후 1시간뒤에 배치 프로세스가 요청을 처리한다.

3xx: 요청을 완료하려면 추가 행동이 필요

리다이렉션의 이해

리다이렉션은 상태코드에 따라 여러가지 방법으로 리다이렉션 한다.

영구 리다이렉션

특정 리소스의 URI가 영구적으로 이동

일시 리다이렉션

주문 완료 후 주문 내역 화면으로 이동

PRG : Post - Redirect - GET
-->중복 주문, 중복 등록을 방지하기위한 일시적 리다이렉션

특수 리다이렉션

결과 대신 캐시를 사용한다. 캐시기간이 만료되었을 경우 캐시에 대한 정보를 제공한다.

3xx(Redirection)

★ 웹 브라우저는 3xx응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.

영구 리다이렉션(301, 308)

Uri가 변경 되었을 경우 새로운 URI가 리다이렉트 하기 위한 상태코드
헤더에 Location이 담겨있어 웹 브라우저는 새로운 URI가 자동 리다이렉트 된다.

301: 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거 될 수 있다.

308: 리다이렉트시 요청 메서드와 본문 유지
(POST로 보낼경우 리다이렉트도 POST로유지한다.)

일시 리다이렉션(302, 307, 303)

리소스의 URI가 일시적으로 변경.

302 : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거 될 수 있다.

307 : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드가 절대 안바뀐다.)

308 : 리다이렉트시 요청 메서드가 GET으로 변경된다.

기타 리다이렉션

304 : Not modified. 캐시를 목적으로 사용한다.
클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에 저장된 캐시를 재사용한다.

4xx: 클라이언트 오류(잘못된 코드, 파일 에러)

4xx(Client Error)

클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수가 없다.
오류의 원인이 클라이언트에 있다.

400 : 요청 구문, 메시지 오류. 요청 파라미터가 잘못되었거나, API스펙이 맞지 않을 때

401 : 클라이언트가 해당 리소스에 대한 인증이 필요하다.

404 : Not Found. 요청 리소스를 찾을 수가 없다. 요청 리소스가 서버에 없음.

5xx: 서버오류, 서버가 정상요청을 처리하지 못함.

5xx(Server Error)

서버 문제로 오류 발생. 서버에 문제가 있기 때문에 재시도하면 성공할 수도 있다.

500 : 서부 내부 문제로 오류가 발생하여 요청처리가 불가능하다.

503 : Service Unavailable. 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없다.

PRG

Post/ Redirect/ Get

POST 중복 요청

POST로 주문 후 웹 브라우저를 새로고침 하면 어떻게 될까?
새로고침은 요청한 메시지를 다시 요청하고, 중복하여 요청된다.

POST 요청 후 새로고침을 계속하면 요청이 계속 처리되고, 주문같은 경우는 새로고침한 횟수만큼 주문이 등록된다.

PRG 예시

POST로 주문 후 새로 고침으로 인한 중복 주문을 방지한다.
POST로 주문 후 주문 결과 화면을 GET 메서드로 리다이렉트하여 새로고침을해도 화면결과를 출력하기 위한 GET을 계속해서 요청하기 때문에 중복주문이 방지 된다.

출처 : 김영한 (인프런)

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글