Judaeng
210319_TIL(Mini node server) 본문
✅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 단축이라는 뜻이다.
월드 와이드 웹 상의 긴 URL을 짧게 만들어주는 페이지이다.
굳이 왜 단축해?
그것은 수백 바이트 길이의 URL이 있을 수 있지만 단축된 URL은 대개 URL 단축 서버의 주소 뒤에 6~7자리 정도의 쿼리가 붙어 있어서 길어야 30 바이트 수준을 넘지 않는다고 한다!
🍒More Study
✅HTTP Status Codes
🍉금요일에 정리하고 올리고 자려고 했는데 주말에 올리게 되었다. 여전히 게으르다ㅎ...😅
'Daily > TIL(Today I Leared)' 카테고리의 다른 글
210323_TIL(Express, Refactor Express) (0) | 2021.03.24 |
---|---|
210322_TIL(Chatterbox Server) (0) | 2021.03.23 |
210318_TIL(Chatterbox Client 마무리, Browser Security) (0) | 2021.03.19 |
210317_TIL(Client Server Architecture, Chatterbox) (0) | 2021.03.18 |
210316_TIL(fetch API, Event Loop) (0) | 2021.03.16 |