요청에 대한 응답으로 상태코드를 보내게 된다. 상태코드는 서버에서 처리된 결과에 정보를 내포하기에 적절한 상태코드를 사용하여 명시적으로 사용하는게 좋다.
그 중에서 대표적으로 많이 사용되는 코드에 대해서 알아보자.
어떤 HTTP 메서드에 어떤 상태코드를 사용하는게 좋을지 궁금하다면?
HTTP 메서드 종류에서 자주 사용되는 조합을 확인해보자!
진행 중임을 의미하는 응답코드이다. 현재까지의 진행상태에 문제가 없으며, 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다.
이 응답 코드는 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려준다. (처리중)
요청이 성공적으로 되었다는 응답코드이다. 정보는 요청에 따른 응답으로 반환된다.
요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었다는 응답코드이다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다.
요청을 성공적으로 완료했지만 요청에 대해서 보내줄 수 있는 콘텐츠가 없다는 의미(헤더는 의미가 있을 수 있다).
이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미한다. 새로운 URI가 응답에 주어질 수 있다.
이 응답 코드는 요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다. 새롭게 변경된 URI는 나중에 만들어질 수 있다. 그러므로, 클라이언트는 향후의 요청도 반드시 동일한 URI로 해야한다.
클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답이다.
클라이언트가 요청한 리소스가 다른 URI에 있으며, 이전 요청과 동일한 메소드를 사용하여 요청해야 할 때, 서버가 클라이언트에 이 응답을 직접 보낸다. 이것은 302 Found HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아야 하는 점만 다르다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 한다.
이것은 리소스가 이제 HTTP 응답 헤더의 Location:에 명시된 영구히 다른 URI에 위치하고 있음을 의미합니다. 이것은 301 Moved Permanently HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 HTTP 메소드를 변경하지 말아야 하는 점만 다르다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 한다.
이 응답은 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미한다.
HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미한다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 인증을 해야한다.
(예를들어 로그인을 하지 않은 경우)
콘텐츠에 접근할 권한을 가지고 있지 않음을 의미한다. 예를 들어, 미승인(unauthorized)이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.
(예를들어 로그인을 한 사용자이지만 권한이 없는경우)
서버는 요청받은 리소스를 찾을 수 없음을 의미한다. 브라우저에서는 알려지지 않은 URL을 의미한다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수 있다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있다.
요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없음을 의미한다. 예를 들어, 어떤 API에서 리소스를 삭제하는 것을 금지할 수 있다. 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며, 이 에러 코드를 리턴할 수 없다.
(예를들어 쓰거나 삭제를 허용하지 않을 때 사용)
이 응답은 요청이 현재 서버의 상태와 충돌될 때 보낸다.
(클라이언트가 만들고자 하는 리소스가 이미 존재하거나 충돌이 있을 때 사용한다.)
웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없다.
서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미한다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생한다.
서버가 요청을 처리할 준비가 되지 않았음을 의미한다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버이다. 이 응답과 함께 문제를 설명하는 사용자 친화적인 페이지가 전송되어야 한다는 점에 유의해야 한다.
참고 사이트
MDN HTTP상태 코드