본문 바로가기
etc

[스크랩] REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code)

by haheehee 2023. 8. 31.

https://sanghaklee.tistory.com/61

 

REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code)

REST API 관점에서 바라보는 HTTP 상태 코드(HTTP status code) TOC Introduction HTTP 와 REST HTTP Status Code 2XX Success 4.1. 200 OK 4.2. 201 Created 4.3. 202 Accepted 4.4. 204 No Content 4XX Client errors 5.1. 400 Bad Request 5.2. 401 Unauthori

sanghaklee.tistory.com

 

HTTP 와 REST

HTTP(HyperText Transfer Protocol)는 웹 환경에서 정보를 주고받기 위한 프로토콜

REST(Representational State Transfer)는 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처

 

=> HTTP는 웹 환경에서 정보를 송수신할 때 사용하는 약속이고, REST는 소프트웨어 아키텍처

 

REST에 반드시 HTTP가 필요한 것은 아니다. WAP, WebRTC, MQTT 등 다른 프로토콜로도 이용 가능

REST는 소프트웨어 아키텍처(설계 지침, 원리 등등)고 REST에서 클라이언트-서버 간 통신 시 HTTP를 사용한 것

 


2XX Success

200 OK

클라이언트의 요청을 서버가 정상적으로 처리했다.

 

201 Created

클라이언트의 요청을 서버가 정상적으로 처리했고 새로운 리소스가 생겼다.

 

201 상태 코드는 POST, PUT 요청에 대한 응답에 주로 사용된다.
클라이언트의 요청이 성공적으로 이뤄졌다는 의미까지는 200과 동일한데, 성공과 동시에 새로운 리소스가 생성되었다는 의미를 포함

 

202 Accepted

클라이언트의 요청은 정상적이나, 서버가 아직 요청을 완료하지 못했다

202 상태 코드는 비동기에 대한 개념이 없다면 생소할 수 있다.
클라이언트의 요청이 정상적이면 서버에선 작업의 성공|실패 응답하는 게 일반적이나, 작업 완료를 위한 일련의 작업들이 오래 걸리기 때문에 나중에 알려주겠다는 의미

204 No Content

클라이언트의 요청은 정상적이다. 하지만 컨텐츠를 제공하지 않는다.

자원 삭제 요청을 했고 이 요청이 유효하니 서버는 해당 자원을 삭제했다. 더 이상 응답할 컨텐츠가 없기 때문에 컨텐츠가 없는 204로 응답한다.
여기서 주의할 점은 200으로 응답하고 응답 body에 null, {}, [], false 등으로 응답하는 것과 다르다는 것이다.
204의 경우 HTTP Response body가 아예 존재하지 않는 경우다.
사실 204를 응답하는 API는 흔하지 않다.

더보기

204로 응답하는 예시다. 절대적이진 않다.

PUT

자원 수정 요청의 결과가 기존의 자원 내용과 동일하여 변경된 내용이 없을 때 204로 응답할 수 있다.

만약 수정 요청으로 자원의 내용이 변경된다면 201로 응답할 것이다.

DELETE

삭제 요청으로 자원을 삭제하여 더 이상 존재하지 않고 그 자원을 참조하는 모든 자원도 삭제되어 더 이상 HTTP body를 응답하는 것이 무의미해졌을 때 사용한다.


4XX Client errors

 

400 Bad Request

클라이언트의 요청이 유효하지 않아 더 이상 작업을 진행하지 않는 경우

대부분의 API는 사전에 유효성 검증을 통해 400 상태 코드로 클라이언트에게 유효하지 않은 요청임을 응답한다.
(유효성 검증 없이 진행하면 5xx 서버 오류가 발생할 수 있기 때문에 대부분 사전에 막는 로직을 추가한다.)
그러나, 400 상태 코드로 응답하는 것만으로는 부족하다.
오류 발생 시 파라미터의 위치(path, query, body), 사용자 입력 값, 에러 이유를 꼭 명시하는 것이 좋다.

404 Not Found

클라이언트가 요청한 자원이 존재하지 않다.

브라우저(클라이언트) 입장에선 자원이 웹 페이지 경로고 존재하지 않는 경로(자원)를 요청했기 때문에 404 상태 코드를 응답했다.
REST API에선 크게 두 가지 경우에서 404 상태 코드를 응답한다.

경로가 존재하지 않음

자원이 존재하지 않음


5XX Server errors

5XX 상태 코드들은 서버 오류로 인해 요청을 수행할 수 없다는 의미

'etc' 카테고리의 다른 글

리눅스 명령어  (0) 2023.08.30
sehcha CMD  (0) 2023.06.01
GET과 POST  (0) 2023.01.26
자료구조 소스코딩  (0) 2022.12.22
MVC 모델  (0) 2022.12.19

댓글