최근에 유튜브 클론코딩 프로젝트를 리팩토링하면서 HTTP status code에 대해서 한 번 살펴볼 필요성을 느꼈다. HTTP status code는 통신의 결과를 요약해주며 API 문서를 작성할 때 꼭 명시해줘야 하는 중요한 개념이기 때문에 목적에 맞는 HTTP status code를 활용할 수 있는 것이 필요하다.
HTTP status code의 종류
- 10X : 통신에 대한 정보를 제공해준다. (ex. 이상 없음, 프로토콜 변경, 처리중 등)
- 20X : 통신 성공
- 30X : 리다이렉트 (클라이언트 측에서는 request를 끝내기 위해 추가적인 동작을 수행해야 한다.)
- 40X : 클라이언트 오류
- 50X : 서버 오류
대표적인 HTTP Status Code의 종류
종류 | 상태 코드 | 이름 | 의미 |
20X (통신 성공) |
200 | OK | 요청 성공 (일반적으로 GET) |
201 | Create | 리소스 생성 성공 (POST, PUT) | |
204 | No Contents | 요청은 성공했지만 내용이 없음 | |
30X (리다이렉트) |
300 | Multiple Choice | 요청 URI에 여러 리소스 존재 (요청에 대한 여러 응답이 가능하기 때문에 그 중 하나를 선택해야 함) |
301 | Moved Permanently | 요청 리소스의 URI가 변경됨 (응답에서 변경된 URI를 제공하기도 함) | |
303 | See Other | 요청 리소스가 다른 URI에 위치하고 있기 때문에 클라이언트 측에 해당 리소스가 다른 URI에 위치하고 현재 URI는 그에 대한 리다이렉트 기능을 수행하고 있음을 알려줌 | |
40X (클라이언트 오류) |
400 | Bad Request | API에서 정의하지 않은 요청이 들어옴 |
401 | Unauthorized | 해당 작업을 위해 클라이언트가 스스로를 인증해야 하나 인증 정보가 없음 | |
403 | Forbidden | 클라이언트가 해당 작업에 권한이 없음 (인증은 되어 있다는 점에서 401과 다름) | |
404 | Not Found | 서버에 존재하지 않는 페이지, 리소스를 찾으려고 할 때 |
|
405 | Method Not Allowed | 요청의 메소드가 허용되지 않은 메소드일 때 (예를 들어서 리소스 삭제를 금지하기 위해 DELETE 메소드 제한), 참고로 GET, HEAD 메소드는 기본이기 때문에 제한할 수 없다. | |
406 | Not Acceptable | 요청한 페이지가 요청한 컨테츠 특성으로 응답할 수 없음 | |
407 | Proxy Authentication Required | 프록시 서버를 통한 인증이 필요할 때 | |
408 | Request Timeout | 가장 최근 요청으로부터 시간이 오래 경과된 연결에 전송하여 서버가 연결을 끊고 싶어함을 알려준다. (일부 서버는 해당 메시지를 보내지 않고 바로 연결을 끊기도 한다.) | |
410 | Gone | 해당 컨텐츠가 서버에서 영구적으로 삭제되었으며 리다이렉트할 URI 역시 존재하지 않기 때문에 캐시, 링크 등 그에 대한 정보를 삭제하라는 의미 | |
429 | Too Many Requests | 클라이언트가 지정된 시간 내에 지나치게 많은 request를 보낸 경우 | |
50X (서버 오류) |
500 | Internal Server Error | 서버 내부 오류 발생 |
502 | Bad Gateway | 게이트웨이 오류 발생 | |
503 | Service Unavailable | 서버가 해당 요청을 처리할 준비가 되지 않음 (ex. 유지보수를 위한 시스템 셧다운, 시스템 과부하 등) |
일단 요 정도 기억해두면 충분하지 않을까 싶다. 추후에 다른 프로젝트들을 진행하면서 실제로 사용하는 상태 코드들이 더 존재한다면 추가하도록 하겠다.
'CS 공부' 카테고리의 다른 글
[Network] 프록시 서버 (Proxy Server) (0) | 2022.04.16 |
---|---|
[Network] HTTP (HyperText Transfer Protocol) (0) | 2022.04.16 |
[CS] 프로세스와 스레드 (0) | 2022.04.16 |
[CS] 스레드 안전 (Thread-safe) (0) | 2022.02.27 |
[Infra] Scale up & Scale out (0) | 2022.02.23 |