SOPT 서버파트 3차 세미나 내용 복습
Status Code
는 사용자가 웹 서버에 요청을 보냈을 때, 응답으로 보내주는 숫자 코드이다.
각 숫자는 미리 약속된 특정한 의미를 포함하고 있다.
따라서 클라이언트는 응답으로 온 숫자를 통해 보낸 요청이 성공적으로 진행되었는지, 앞으로 어떻게 해야할지 결정하는데 도움을 받을 수 있다.
200번대의 응답코드는 성공
을 의미한다.
대표적인 성공코드로, 에러 없이 요청이 성공적으로 진행되었다는 것을 의미한다.
(서버가 요청받은 페이지를 성공적으로 제공)
대부분의 경우 성공에 대한 응답을 200
으로 통일하는 경우가 많다.
200번대의 코드들을 조금 더 세분화해서 사용한다면, 200
번은 주로 GET
요청에 대한 응답으로 사용되게 된다.
요청이 성공적으로 처리 되어, 서버가 새로운 리소스를 생성했을 때 사용하는 코드이다.
POST
, PUT
등의 요청에 대한 응답으로 주로 사용된다.
서버에 대한 요청이 성공적으로 처리되었고, 제공 해줄 응답 데이터가 없을 때 204를 사용한다.
예를들어 PUT
으로 수정 요청을 받았는데 수정할 사항이 없는 경우,
사용자의 요청은 받아들여졌으니 200번대 코드를 사용하지만 응답할 데이터도 없으므로 204
를 사용한다.
또한 DELETE
요청을 받을 경우에도, 요청이 받아들여져 데이터가 삭제되었을 때, 제공해줄 데이터가 없으므로 204
를 사용한다.
300번대의 응답코드는 리다이렉션
을 의미한다.
이는 요청이 완수되기 위해서는 추가적인 행동이 필요하다는 의미이다.
요청한 리소스가 응답 헤더의 Location
에 주어진 URL로 완전히 옮겨졌음을 의미한다.
예를들어 주소창에 http://naver.com/
을 입력하면, 301
을 리턴하는데,
응답 헤더의 Location을 확인해보면 http://www.naver.com/
으로 리다이렉션 된다.
웹브라우저는 이 코드를 받고, 해당하는 URL로 리다이렉트한다.
301
과 비슷하게 사용된다. 차이가 있다면 301
의 경우는 영구적으로 이동하는 것이고, 302
의 경우, 일시적으로 이동한다는 것이다.
예를들어, kart.nexon.com
같은 게임페이지에 접속할 때, 메인 홈페이지가 아닌 현재 진행중인 이벤트를 보여주는 홈페이지로 일시적으로 이동시킨다.
위 예시의 경우 kart.nexon.com
> kart.nexon.com/redirector.aspx
> kart.nexon.com/events/~
의 절차를 통해 이벤트 페이지로 이동하게 된다.
캐시목적으로 사용된다. 요청 후 수정된 사항이 없을 때 사용된다.
이 경우 캐시에 저장되어 있는 데이터를 그대로 보여주게 된다.
HTTP 304 Not Modified의 이해 및 예제(with. spring)
400번대의 코드들은 클라이언트의 요청이 유효하지 않을 때 사용한다.
API
에 정의되지 않은 방식으로 요청을 하는 등, 클라이언트가 잘못된 요청을 했을 때 사용한다.
예를들어, 로그인할 때 id만 보내고 password를 보내지 않았을 때, 400
을 사용할 수 있다.
두 경우 모두 클라이언트가 권한이 없어서 요청을 받아들일 수 없을 때 사용한다.
두 코드의 차이점은
401
의 경우는 인증이 되지 않은 경우이다. 예를 들어 로그인이 필요한 기능을 로그인 하지 않은 상태로 요청하면 401
이 적절하다.403
의 경우는 권한이 없는 경우이다. 예를 들어 어떤 카페에서 로그인은 되어있는 상태이지만 등급이 낮아 접속 권한이 없을 때는 403
이 적절하다.서버에 클라이언트가 요청한 리소스를 찾을 수 없을 때 사용한다.
실생활에서 자주 접할 수 있는 에러인데, 링크를 잘못입력하거나, 예전 링크여서 사라진 위치를 참조하고 있을 때 등 많은 이유로 404 에러를 만나게 된다.
이런 이유로 많은 사이트에서 404 Not Found
페이지를 꾸며 놓는데,
사이트 주소 뒤에 /asdfasdfasdfjfjfjfjfj
같은 없을 법한 주소를 입력해서 확인할 수 있다.
깃허브의 404 페이지
IETF
에서 만우절 장난으로 만든 응답코드
HTTP 418 에러의 의미를 아시나요? I'm a teapot!
500번대의 코드들은 400번대와 반대로, 클라이언트 측이 아닌 서버측에 오류가 있을 때 사용된다.
200 OK
와 비슷하게 서버 오류에 대해서 포괄적으로 사용되는 코드이다.
클라이언트의 요청을 처리하는 과정에서 DB에서 오류가 발생하는 등 요청이 잘못된 것이 아니라 서버측에서 문제가 생겼을 때 사용한다.
예를들어, 회원가입을 하는 로직에서,
개발자들은 이런 상황을 미연에 방지할 수 있는 로직을 구현해야 한다.
(만약 사용자가 중복된 이메일을 사용하려고 할 때, 무작정 Create 하지 않고 DB에서 이미 존재하는지 확인 후 작업을 진행)
서버의 과부하, 점검 등의 이유로 일시적으로 서버에 접근이 불가능할 때 사용한다.