테스트주도개발(TDD)로 Node.js를 이용해 API 서버개발을 학습할 수 있는 세미나 입니다.
자바스크립트 기술로 구현된 Node.js와 대표적인 웹 프레임웍인 Express.js의 기본 원리를 이해한다.
이를 기반으로 모바일과 웹서비스에서 사용하는 REST API 개발 방법을 학습합니다.
브라우저 밖에서 자바스크립트 코드를 실행한다.
크롬에서 사용하는 V8 엔진 사용
이벤트 기반의 비동기 I/O 프레임워크
모듈 시스템
const util = require('util') // util( node 모듈 )
const name = 'world'
const msg = util.format('Hello %s',name)
console.log(msg) // Hello world
//math.js
const math = {
add(a,b){
return a + b
}
}
module.export = math
//index.js
const math = require('./math')
console.log(math.add(1,2)) //3
노드는 기본적으로 비동기로 동작함.
readFile() vs readFileSync()
1. readFileSync() => 동기
//test.txt
테스트 파일입니다.
//index.js
const fs = require('fs')
const file = fs.readFileSync('test.txt',{
encoding:'utf8'
})
console.log(file) // 테스트 파일입니다.
EX1)
const fs = require('fs')
const file = fs.readFile('test.txt', {
encodin:'utf8'
}) //readFile 은 Worker 한테 job을 넘겨주고 다음 evevnt (console.log) 를 기다린다. 즉, 파일를 다 읽지도 않았고, worker로 넘기고 console.log 를 실행 시키려 한다.
console.log(file) // Undefined
EX2)
const fs = require('fs')
const callback = (err, file)=> {
console.log(file)
}
fs.readFile('test.txt', {
encodin:'utf8'
},callback)
// EX1) 의 해결방법은 callback 함수: EventLoop가 파일을 읽으라고 했고 , worker한테 위임을 하고, EventLoop이 다른 event를 수신 하고 있을때 Worker는 다 읽으면 다시 EvnetLoop한테 알려줘야 하는데 그 방법을 callback 함수를 사용한다.
서버를 띄어보자! ( Hello world)
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200; // res: 응답객체 req: 요청객체
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
postman 사용! => client 에서 요청을 해보자! ( curl 과 같은 기능)
(참고) 이미지는 github에서 확인하기.