Judaeng

210319_TIL(Mini node server) 본문

Daily/TIL(Today I Leared)

210319_TIL(Mini node server)

Judaeng 2021. 3. 21. 18:35

✅Toy 문제 sudoku

문제 이름대로 스도쿠 답을 구하는 문제였다.

시간도 많이 걸리고 종이도 3장 정도가 없어졌다🤮

스도쿠 규칙도 생각해보고 배열을 어떻게 판별할지도 많이 생각해보고 코드를 써도 답이 안 나왔다.

그래서 래퍼런스 코드를 보면서 공부했다.

 

✅Mini node server

node.js에서 http 모듈을 이용해 웹서버를 만들었다.

HTTP 트랜잭션 해부라는 가이드가 있었다.

이 가이드를 읽고 코드를 가져와서 사용했다.

일단 해보고 어떤 변화가 있는지 확인하면서 진행했다.

request객체와 response 객체가 어떤 식으로 작동하는지 이해할 수 있었다.

웹서버를 만들고, 클라이언트에서 보낸 POST 요청을 받으면 body부분을 변환해 다시 body에 담아 응답을 돌려주는 구조였다.

OPTIONS 메서드에 따른(preflight request) 응답 부분도 추가적으로 공부를 해보니까 CORS를 조금은 더 이해한 것 같다.

 

더보기

Achievement Goals

HTTP (공통)

  • HTTP 요청/응답을 브라우저를 통해 확인할 수 있고, 해당 내용을 읽을 수 있다.
  • HTTP 다양한 요청 방식과, 응답 코드에 대해 이해할 수 있다.

node.js modules의 사용

  • node.js의 내장 http 모듈을 사용할 수 있다. (mini node server)
  • node.js의 내장 fs 모듈을 사용할 수 있다. (optional) (chatterbox server)
  • http 모듈 사용시에 서버에 CORS 설정을 할 수 있다. (mini node server)
  • CommonJS를 이용한 모듈 내보내기/불러오기를 할 수 있다. (chatterbox server)

라우팅과 API

  • 라우팅(조건에 따른 분기)을 이해하고, 이를 서버 코드에서 구현할 수 있다. (mini node server)
  • 클라이언트가 사용할 수 있도록, 서버 API 문서를 직접 작성할 수 있다. (chatterbox server)

Express 라이브러리 맛보기 (refactor express)

  • express 라이브러리가 어떤 작업을 단순하게 만드는지 이해할 수 있다.
  • 미들웨어의 개념을 이해할 수 있다.

서버 개발과 디버깅 (chatterbox server)

  • 서버 개발을 돕는 다양한 툴들을 익힐 수 있다.
    • nodemon의 사용
    • inspect 옵션을 이용한 디버깅

 

🍒Remember


✅nodemon(node monitor)

노드가 실행하는 파일이 속한 디렉터리를 감시하고 있다가 파일이 수정되면 자동으로 노드 애플리케이션을 재시작하는 확장 모듈이라고 한다😅

HTTP 서버를 켰을 때 변경 사항을 바로바로 반영해서 서버를 킬 수 있다.

사용하려면 install --save 해주고 사용해줘야 한다.

프로젝트를 진행할 때 사용하면 정말 좋다고 한다.

코드를 수정할 때마다 노드 명령어를 통해 새로 시작할 필요가 없어서 매우 좋다.

 

✅HTTP(Hyper Text Transfer Protocol) 모듈 

createServer : 웹 서버 객체 생성 (요청이 올떄마다 콜백 함수가 호출됨)
listen() : 실제 요청 처리하는 메서드
on() : 이벤트 등록
data, end : 이벤트 (이벤트 리스너 등록으로 데이터 받기 가능)
writeHead() : 헤더 작성 (setHeader + statusCode)
end() : response body 전송

 

통신 방식 특징

 

1. request - response

  • 클라이언트가 HTTP 요청을 서버에 보내면, 서버는 요청을 처리한 후 결과에 따른 HTTP 응답을 클라이언트에게 보낸다.
  • 클라이언트와 서버 사이의 소통은 ASCII 메시지로 이루어진다.

2. stateless(무결성이란?)

  • HTTP 통신에서는 state라는 개념이 존재하지 않는다.
  • 통신을 서로 주고받아도 클라이언트와 서버가 서로 연결되어 있는 것은 아니라서 각각의 통신은 독립적인 것이다.
  •  장점
    • 통신간의 연결 상태 처리나, 정보의 저장을 관리할 필요가 없어서 서버 디자인이 간단하다
    • 각각의 HTTP 요청에 독립적으로 응답만 보내주면 OK
  • 단점
    • HTTP 요청을 보낼 때마다 해당 요청을 처리하기 위한 모든 데이터를 매번 보내야 한다
    • ex) 로그인 정보
      • 이전 통신의 정보를 모르기 때문에 로그인 상태에 대한 정보를 매번 보내야 한다면? 으악
      • 이를 해결하기 위해 쿠키 cookie나 세션 session을 사용해서 데이터를 처리한다

URL Shortener

URL 단축이라는 뜻이다.

월드 와이드 웹 상의 긴 URL을 짧게 만들어주는 페이지이다.

굳이 왜 단축해?

그것은 수백 바이트 길이의 URL이 있을 수 있지만 단축된 URL은 대개 URL 단축 서버의 주소 뒤에 6~7자리 정도의 쿼리가 붙어 있어서 길어야 30 바이트 수준을 넘지 않는다고 한다!

 

 

🍒More Study


serve(서브) 모듈

✅HTTP Status Codes

 

🍉금요일에 정리하고 올리고 자려고 했는데 주말에 올리게 되었다. 여전히 게으르다ㅎ...😅

Comments