http 상태 코드를 알아야 하는 이유는 RESTAPI를 했을때 필요하기 때문이다. 만약 에러가 발생한 경우, 클라이언트에 에러가 발생했다고 알려줘야 한다. 그 때 보내는 것이 상태코드이다.
100은 서버가 요청의 일부를 받았으며, 나머지 요청을 더 기다리고 있다는 것을 나타낸다. 101은 http에서 https같이 프로토콜 전환이 일어났을때 전환이 승인되었음을 알려준다. 보통 웹소켓을 사용할때 101을 볼 수 있다.
200은 성공을 의미한다. 대부분은 200이지만, 몇 가지 다른 유형이 있다.
201은 새로운 컨테츠를 만들기에 성공했을때 사용한다. 새로운 포스트를 썼다든가, 새로운 댓글을 썼을때 보내주면 된다. POST 메소드에 대한 응답으로 잘 어울린다.
204는 요청이 성공했지만 응답할 콘텐츠가 없는 경우를 뜻한다.
206은 스트리밍의 경우와 같이 요청에 대한 응답으로 일부만 먼저 전송한 경우 보내준다.
300번대 페이지를 이동시킬때 사용한다. 특히 301페이지는 영구적으로 주소가 바뀌었을 경우, 301 코드와 함께 새로운 주소로 이동시킨다. 새로운 주소는 캐싱되기 때문에 속도가 빨라진다.
반면, 302는 임시적으로 주소가 바뀌었을 경우 사용한다. 또는 로그인 후 메인페이지로 이동한다든가 할 때에도 사용된다. 대부분의 리다이렉트는 302 코드를 사용한다 영구적으로 주소를 바꾸는 경우는 드물다.
304는 이전에 방문했을때의 요청 결과와 다르지 않을 때 표시된다. 즉 캐시된 페이지를 그대로 사용한다. 307은 임시로 페이지를 리다이렉트하는 것이다.
400번대 부터는 에러를 표시한다. 400은 서버가 요청을 이해하지 못 할 경우 발생한다. 올바른 요청을 보냈는지 검사해야 한다. 401은 로그인을 하지 않아 페이지를 열 궐한이 없을때 보내는 코드이다. 403은 금지된 페이지를 뜻한다. 로그인을 하든 하지 않든 상관없이 접근할 수 없는 페이지는 403을 전송한다. 관리자 페이지가 대표적인 예시이다.
404는 찾을 수 없는 페이지이다. 주소륵 잘못 입력했거나 하면 404를 요청한다. 403대신에 404를 전송하는 경우도 많다. (해커들의 공격을 방지하고자 하는 등등)
408은 요청시간 초과이다.
409는 서버가 요청을 처리하는 과정에서 충돌이 발생한 경우이다.(회원가입을 했는데, 이미 사용하고 있는 아이디가 있을 경우 등등)
401은 영구적으로 사용할 수 없는 페이지이다.
451은 warning.or.kr
처럼 법적으로 막힌 페이지를 표시할때 451 코드를 전송한다.
500번대는 서버오류이다. 요청은 제대로 전송되었지만, 서버가 처리하지 못하는 경우이다. 500은 내부 서버 에러(internal Server Error)가 날때 전송된다. 이것은 서버 상의 에러이기 때문에 해당 서버 관리자가 반드시 살펴봐야 한다.
501은 서버에 아직 해당 요청을 처리하는 기능을 만들지 않았다는 뜻이다.
502는 서버로 가는 요청이 중간에서 유실된 경우이다.
503은 서버가 터졌거나(접속이 폭주 또는 Ddos 공격) 유지보수 중일때 전송한다. 하지만 유지보수 중일때 는 503을 보내기보다는 유지보수 중이라는 것을 알려주는 페이지를 전송해주는 것이 좋다.
504는 서버 게이트웨이에 문제가 생겨 시간 초과가 된 경우이다.
505는 HTTP 버전이 달라 요청을 처리할 수 없음을 의미한다.
많은 코드들이 있지만 문제는 대부분의 경우 서버가 코드를 알아서 보내주지 않는다. 응답을 보낼 때 코드를 지정한 후에 보내는 것이다. express 프레임 워크는 5.0 버전부터는status를 보내는게 필수화 되었다.
res.status(200).json({ completed });