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 옵션을 이용한 디버깅
V8 엔진으로 빌드된 JS runtime.
Event: 유저의 버튼 클릭이나 네트워크에 리소스를 요청하는 등
blocking & Non-blocking: 동기처리 비동기처리
I/O model: Input을 주면 Output 반환 모델
Node core modules: node와 함께 번들링 되어있는 module.
npm init으로 package.json 생성하고 프로젝트를 시작하자.
dependency를 설치하는 경우 --save
dev-dependency를 설치하는 경우, 추가로 -dev 옵션을 주자.
default로 설치할 경우, -g(global)로 설치하자.
npm install @babel/core --save-dev / -g
서버와 클라이언트가 주로 HTML 등의 문서를 주고받는 데 사용하는 protocol. 주로 TCP/UDP 80번 포트를 사용함.
URI = HTTP 요청은 URI를 통해 할 수 있으며, 주소창을 통해 하는 요청은 전부 get request임.
const http = require('http');
let server = http.createServer(function(request, response){ // 요청, 응답, 에러 등을 처리.
}).listen()
request: 첫번째 인수로 전달되며,http.IncomingMessage라는 객체에서 클라이언트의 요청에 대한 기능을 정리하고 있다.
response: 두번째 인수이며, http.serverResponse 라는 개체에 서버에서 클라이언트로 리턴되는 응답에 대한 기능을 정리하고 있다.
request.on('이벤트명', () => {
})
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
}; // CORS 가능하다는 설정을 변수에 지정하여 하기 method에 삽입.
response.writeHead(200, defaultCorsHeader);
res.write('Hello World\n');
response.end(JSON.stringify(body.toLowerCase()));
server.listen(5000)
혹은
server.listen(PORT, ip, () => {
console.log(SashaInSPb);
});