Session 18*. http 모듈, Express 서버 생성 차이

김민재·2021년 9월 13일
0

TIL, WeCode, Course 

목록 보기
36/48
post-thumbnail
  • 1> http 모듈로 server를 생성 2> express로 server를 생성하는 것의 가장 큰 차이?
  • 1> http 모듈은 모든 라우팅을 if 조건문으로 분기 처리를 해야한다.
  • 2> express를 사용하면 라우팅을 처리하는 것이 간편해지고 각각의 함수를 분리함으로서 직관적인 코드를 짤 수가 있다.
  • 2> response를 반환할 때 사용하는 1> res.send(), 2> res.json() 3> res.end()의 차이점에 대해서
  • 1> res.send()는 기본적으로 response를 보내는 역할을 하고 send에 전해진 argument에 따라서 Content-type 헤더가 자동적으로 정해진다
    • 전달된 argument의 데이터 타입으로는 Buffer, String, Object, Array가 올 수 있다.
  • 2> res.json()은 전달한 argument를 json형식으로 변환하여 보내준다. 즉, 이는 Content-type 헤더를 application/JSON으로 고정해서 보낸다는 것을 의미한다.
    • 결국 res.json()도 마지막엔 res.send()를 호출하여 응답을 보내는 역할까지 수행한다.
  • 3> res.end()는 응답 관련된 모든 작업이 끝나고 세션을 종료하기 위해서는 호출하며 주로 보내줄 데이터가 없을때 사용한다.
    • 주로 404 에러처리를 리턴해주어야 할 때 사용되곤한다.
    • res.json()이나 res.send() 모두 응답을 종료해주는 역할을 하기 때문에 명시적으로 표시해줄 필요는 없다고한다.
  • 3> 자주 사용하는 status 코드와 어떤 상황에서 사용하는지 정리하기
  • status 코드를 알아야 하는 이유는 REST API를 했을 때 필요하기 때문이다.
    만약 API 통신 중 에러가 발생한 경우 클라이언트에게 에러가 났다는 사실을 알려줘야 하는데 이 때 보내는 게 상태 코드가 바로 status 코드이다.
  • status 코드에는 100 단위로 나눠지는 5개의 번호대가 존재한다.

1XX번대는 정보를 나타낸다.

  • 100번대 번호는 서버가 요청의 일부를 받고 나머지 요청을 기다리고 있다는 것을 의미한다.
    • 101번은 http에서 https같이 프로토콜 전환되어 전환이 승인되었음을 알려준다.

2XX번대 성공을 나타낸다.

  • 201번은 새로운 컨텐츠 생성에 성공했을 때 사용된다. 새로운 글을 작성하거나, 새로운 댓글을 작성했을 때 보내주곤한다. 이는 POST 메소드에 응답의 코드로 잘 사용된다.
    • 204번은 요청 성공은 했지만 요청에 응답할 콘텐츠가 없는 경우에 사용한다.
    • 206번은 스트리밍 경우 같이 요청에 대한 응답으로 일부를 먼저 전송한 경우에 보내주는 코드이다.

3XX번대는 리다이렉션을 나타낸다.

  • 300번대는 즉, 페이지를 이동 시킬 때 사용한다.
    • 301번 페이지는 영구적으로 주소가 바뀐 경우, 301 코드와 함께 새로운 주소로 유저를 이동킨다.
    • 반면, 302번은 임시적으로 주소가 바뀌었을 경우에 사용한다. 또는 로그인 후 메인으로 이동 할 때 등에도 사용되며 대부분의 리다이렉트는 302 코드를 사용한다.
    • 304번은 이전에 방문했을 때의 요청 결과와 다르지 않은 경우 표시된다.
    • 307번은 임시로 페이지를 리다이렉트할 때 사용한다.

4XX번대는 클라이언트 오류를 의미한다

  • 400번대는 에러를 나타내는 코드들이다.
    • 400번은 서버가 요청을 이해하지 못 할 경우 발생하여 올바른 요청을 보냈는지 검사한다.
    • 401번은 유저가 로그인 하지 않아 페이지를 열 권한이 없을 때 사용되며
    • 403번은 금지된 페이지로 로그인, 인증의 여부와 상관없이 접근할 수 없는 페이지에 접근할 경우 403번의 코드를 전송한다. 주로 관리자 페이지에 접속 시 보내진다.
    • 404번은 찾을 수 없는 페이지를 의미한다. url 주소를 잘못 입력하면 404번 코드로 응답한다.
    • 408번은 요청 시간 초과 409번은 서버가 요청을 처리하는 과정에서 충돌이 발생한 경우의 응답하는 코드로 가령 회원가입을 하려는데 이미 사용하고 있는 아이디인 경우에 쓰이며 410번은 영구적으로 사용할 수 없는 페이지이고 법적으로 막힌 페이지를 표시할 때는 451번대 코드를 전송한다.

5XX 서버 오류

  • 500번대는 서버 오류를 의미하며 클라이언트의 요청은 제대로 전송되었지만 서버가 요청을 처리하지 못할 경우를 의미한다.
    • 500번은 내부 서버 에러가 발생했을 때 전송되어 서버 상의 에러이다.
    • 501번은 서버에 아직 해당 요청을 처리하는 기능을 만들지 않았음을 의미한다.
    • 502번는 서버로 가는 요청이 중간에서 유실된 경우를 의미한다.
    • 503번은 서버가 터졌거나(접속이 폭주 등의 이유로) 전송된다
    • 504번은 서버 게이트웨이에 문제가 생겨 시간 초과가 된 경우이며 505번은 HTTP 버전이 달라 요청을 처리할 수 없음을 의미한다.

=> 응답을 보낼 때 코드를 지정한 후에 보내야하는데 express 프레임워크의 5.0버전부터 status를 보내는 게 필수화되었다고한다.

res.status(200).json({ completed: true });

#📑Study Source

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글