본문 바로가기

programming study/Node.js

[생활코딩]WEB2-Node.js (10)(2020.12.24)

본 내용은 해당 강의 토대로 작성


API

우리가 사용했던 함수 fs.readFile 은 개발자들이 만들어 놓은 것이다. Node.js의 공식 홈페이지에서 이 함수를 어떻게 사용하고 어떤 목적으로 사용하는지 그리고 인자와 콜백을 받는지 등을 상세하게 설명해 놓았다. 이렇게, 약속된 조작장치 같은 것을 Interface라고 한다. 웹 개발자들은 Interface를 실행시킴으로써 애플리케이션을 만들 수 있게 된다. 이를 프로그래밍 하기 위해서 제공되는 API(Application Programming Interface)라고 한다. API는 프로그래밍 언어를 다룰떄의 조작장치 같은 것이라 어떠한 프로그래밍 언어라도 가지고 있다. 만약, 새로운 언어를 배울 때 조작이 궁금하면 API를 찾으면 된다.

http는 웹 브라우저와 웹 서버가 통신할 때 사용하는 규칙을 말한다. Node.js의 공식 홈페이지에는 버전별로 지원하는 API 가 설명되어 있는데, 이 http를 지원하는 API는 이미 실습에 사용한 아래의 코드이다.

var http = require('http');
...
var app = http.createServer(function(request,response){
...
}

http 변수에 모듈을 가져오고 createServer 라는 함수를 사용하는 것을 볼 수 있다. 이 함수는 콜백함수를 사용한다. createServer를 사용해서 웹 서버를 만들고 외부에서 요청이 들어오면 웹 서버는 콜백함수를 실행한다.

콜백함수의 첫 번째 인자 request는 웹 브라우저로부터 들어온 요청에 대한 여러가지 정보를 담고 있는 객체이다. 두 번째 인자 response는 전송하고 싶은 정보를 응답할 수 있도록 한다.

즉, 지금까지 코드한 모든 것들은 위의 API에 의해서 약속에 따라, 요청한 정보와 응답할 정보를 만든 것이다.

Node.js의 설명에 의하면, createServer는 리턴 값으로 http.server를 가진다. 즉, 위 코드에 의하면 변수 app 에 그 리턴값이 담겨져 있는 것이다.

app.listen(3000);

하단에 위와 같은 명령어가 있는데, 리턴 값을 적용하면 server.listen 이다. 이것은 요청에 대해서 응답할 수 있도록 http 서버를 구동시킨다. 이 함수는 여러가지 인자를 받을 수 있는데, 위의 경우에는 입력된 숫자가 port를 의미한다. 즉, 웹 브라우저로 접속할 때 해당 포트로 들어오면 애플리케이션이 동작하게 되는 것이다.

보충수업 - PM2 사용법

pm2 kill

pm2 실행 앱 전부 종료

pm2 main.js --watch --no-daemon

백그라운드로 실행하지 않는다. 동시에 로그도 볼 수 있다.(daemon: 백그라운드 실행 프로그램)

pm2 start main.js --``watch` `--ignore-``watch``=``"data/* sessions/*"`  `--no-daemon

특정 디렉토리에 대한 watch 를 하지 않음

느낀점

기나긴 Node.js 수업을 마쳤다. 힘들었지만, 그만큼 배운 것이 많았다. 웹 어플리케이션 제작에 대해서 전체적인 맥락이 어느정도 잡히는 것 같다. 조금 더 관련 개념을 공부해야할 것 같긴 하다.