-
[Network] HTTP Status Code(상태 코드)Development/Network 2020. 9. 29. 03:07728x90
🙋♀️ 들어가기전에
API를 설계하다보면 Http 상태 코드의 중요성을 알 수 있다.
현재 회사의 API 설계를 보면 모든 Error는 400, 모든 Success는 200로 코딩이 되어있었다.
근데 찾아보니 다양하고 구체적인 상태 코드들이 많이 있다는걸 알게되었고, 코드만 봐도 어떤 에러인지 알 수 있게 용도에 맞게 상태 코드를 반환해주는게 중요하다는걸 알았다.
이번 포스팅에서 다양한 Http 상태 코드의 대해서 알아보겠다.
💁♀️ HTTP Status Code란?
Http 요청이 성공/실패 여부를 서버에서 알려주는 코드다.
응답은 5개의 그룹으로 나누어진다.
-정보를 제공하는 응답(1xx)
-성공적인 응답(2xx)
-리다이렉트(3xx)
-클라이언트 에러(4xx)
-서버 에러(5xx)
# 정보 응답 : 요청을 받았으며 프로세스를 계속 진행한다.
100(계속): 지금까지의 상태가 괜찮으며 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다.
101(프로토콜 전환): 클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답에 들어가며 서버에서 프로토콜을 변경할 것임을 알려준다.
102(처리): 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려준다.
103(초기 힌트): 주로 Link 헤더와 함께 사용되어 서버가 응답을 준비하는 동안 사용자 에이전트가(user agent) 사전 로딩(preloading)을 시작할 수 있도록 한다.
# 성공 응답 : 요청을 성공적으로 처리했다.
200(성공): 요청 성공
성공의 의미를 HTTP 메소드에 따라 달라진다.
GET: 리소스를 불러와서 body에 전송되었다.
HEAD: 개체 해더가 body에 있다.
PUT 또는 POST: 수행 결과에 대한 리소스가 body에 전송되었다.
TRACE: body가 서버에서 수신한 요청 메시지를 포함하고 있다.201(작성됨): 요청이 성공적으로 처리되어 새 리소스 생성
202(허용됨): 요청을 수신했지만 응답이 반환되지 않은 경우
203(신뢰할 수 없는 정보): 요청을 성공적으로 처리되었지만, 요청에 대한 검증이 되지 않은 상태
204(콘텐츠 없음): 요청을 성공하였지만, 콘텐츠가 없음을 의미
205(콘텐츠 재설정): 204와 동일하지만, 새 입력을 위한 폼 재설정 같은 문서 뷰를 재설정할 것을 요구
206(일부 콘텐츠): 요청의 일부만 성공적으로 처리
# 리다이렉션 메시지: 요청 완료를 위해 추가 작업 조치가 필요하다.
300(여러 선택항목): 요청에 대해서 하나 이상의 응답 가능, 따라서 유저가 그 중 하나를 반드시 선택해야함
301(영구 이동): 요청한 리소스의 URI가 변경되었음을 의미
302(임시 이동): 요청한 리소스의 URI가 변경되었음을 의미
303(기타 위치 보기): 클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답
304(수정되지 않음): 캐시를 목적으로 사용되며, 클라이언트에게 응답이 수정되지 않았음을 알려주며, 클라이언트는 계속해서 응답의 캐시된 버전 사용 가능
307(임시 리다이렉션): 클라리언트가 요청한 리소스가 다른 URI에 있으며, 이전 요청과 동일한 메소드를 사용하여 요청해야할 때, 서버가 클라이언트에 이 응답을 직접 보냄.
# 클라이언트 에러
400(잘못된 요청): 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미
401(권한 없음): 인증이 필요한 요청으로, 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 함
403(금지됨): 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않음을 의미하며, 관리자 시스템 같이 권한이 필요한곳에 권한 없이 접근할 때 사용
404(Not Found, 찾을 수 없음): 서버는 요청받은 리소스를 찾을 수 없으며, 브라우저에서는 없는 URL을 의미
405(허용되지 않는 방법): 요청에 지정된 방법을 사용할 수 없음을 의미하며, POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우, 또는 읽기 전용 리소스에 PUT 요청을 보내는 경우에 사용
408(요청 시간초과): 서버의 요청 대기가 시간을 초과
409(충돌): 서버가 요청을 수행하는 중에 충돌이 발생
# 서버 에러
500(내부 서버 오류): 서버에서 클라이언트 요청을 처리 중에 에러가 발생
501(구현되지 않음): 서버에 요청을 수행할 수 있는 기능이 없음
502 (Bad Gateway): 서버가 요청을 처리하는 데 필요한 응답을 얻기 위해 게이트웨이로 작업하는 동안 잘못된 응답을 수신했음을 의미
503(서비스를 사용할 수 없음): 서버가 일시적으로 요청을 처리할 수 없으며, 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때 경우에 발생
참고자료
🎉 피드백은 언제나 환영입니다. 🎉
728x90'Development > Network' 카테고리의 다른 글
[Network] Cookie SameSite (browser cookie issue) (0) 2020.10.05