on
[Nodejs] Nodejs로 서버 구현하기
[Nodejs] Nodejs로 서버 구현하기
시작하기 앞서 본 글은 Vitual Studio Code환경에서 진행되며, Ctrl + `를 통해 터미널 창을 열 수 있다.
Nodejs로 서버를 구현하기 위헤 먼저 작업파일에서 필자는 C:\workspaces파일이다. 콘솔창에 npm init으로 package.json을 생성해준다. json 파일은 속성:값 쌍이나 키:값 쌍 으로 이루어진 데이터 파일이라고 생각하면 된다.
그 후 npm install로 패키지 모듈들을 설치해준다. 모듈은 객체지향 언어인 Javascript에서 파일을 모듈화시켜 다른 파일에서도 사용하는 것인다. 끝내고 나면 작업파일에 node_modules, package-lock.json, package.json이 있을 것이다. 이것들이 확인됐으면 먼저 콜백해줄 html파일을 생성해 줄 것이다.
필자는 간단한 index.html파일을 만들어주었다.
Nodejs My first Nodejs Server!
그리고 서버를 구동시켜줄 server.js파일을 만들어 주었다.
현재 작업공간이다
코드를 쓰기 전에 먼저 URL에 대한 개념을 알아보자. URL은 도메인, 서버URL, 쿼리스트링으로 나누어지는데
http://www.naver.com/mypage/firstpage/?section=15이라면
http://www.naver.com == 도메인, /mypage/firstpage == 서버URL, ?section=15 == 쿼리스트링이다.
쉽게 도메인은 IP주소를 가르키고, 서버URL은 서버에 어떤 파일을 요청하는지를, 쿼리스트링은 서버에 어떤 데이터를 보내느냐다. 본 글에서 서버를 다룰 때 이러한 url을 활용해야 하여 간략히 알아보았다.
먼저 server.js파일에서 사용할 모듈들을 받아올 것이다.
//사용할 모듈들을 require로 불러내 사용할 수 있게 해준다. const http = require('http'); const url = require('url'); const fs = require('fs');
그리고 createServer을 이용하여 서버를 만들어 줄 것이다.
//http모듈에 포함된 createServer함수를 이용하여 서버를 만들어준다. const server = http.createServer((request, response)=>{ const parsedUrl = url.parse(request.url); //만약 Url의 querystring이 /index.html이라면 index.html을 콜백해준다. if(parsedUrl.query == 'index.html'){ response.writeHead(200,{'Content-Type':'text/html'}); fs.readFile(`./${parsedUrl.query}`, 'utf8',(err,data)=>{ response.end(data); }); //index.html이외의 query를 가지고 있다면, 오류페이지를 띄워준다. }else{ response.writeHead(404,{'Content-Type':'text/html'}); response.end("404 Page Not Found"); } });
request는 사용자가 서버로 요청한 값, response는 사용자에게 돌려줄 값이라고 생각하면 된다. 이는 http.createServer함수의 인자중 하나인 함수의 인자값이다.
readFile은 파일을 읽는 것인데. 이는 fs.readFile(파일위치,옵션,function(err,data))로 구성되는데 err은 오류가 발생했을 떄, data는 readFile로 읽은 값이다. url.parse는 url을 파싱(나누어준다)해주는데, request.url에 저장된 url을 파싱하여 query를 알아내고, 이를 넣은 변수를 readFile에 넣어주어 같은 값을 찾고, 그에대한 값을 사용자에게 준다. 이를 이용해 if문으로 정해진 query가 아니라면 오류페이지를 리턴해준다. 쿼리로 하기 때문에 이와같은 작업을 할 수 있다.
그 후 listen 함수로 서버를 열어 줄 것이다.
//listen(PORT, function)으로 서버를 실행시켜준다. server.listen(80,()=>{ console.log("Server_running.."); })
함수에 만들어준 서버 파일.listen(PORT, 함수)로 서버를 열어준다.
그 후 Server_running..을 콘솔에 출력해 서버가 제대로 작동되고 있음을 알려준다. 서버를 끄고싶다면 터미널창에서 Carl+c를 입력해준면 된다. 한번에 종료되지 않는다면 한번 더 누르자. 그 후 node server.js로 서버를 실행시켜주면
이와같은 메시지가 터미널에 출력되며 서버가 작동된다. 서버가 제대로 작동되고 있다면 http://localhost/?index.html로 들어갔을 때
이와같은 화면이 나오게 된다. 주소 뒤 index.html에 다른 값들을 넣는다면
이렇게 오류페이지가 나오게 된다.
server.js 전체 소스파일
//사용할 모듈들을 require로 불러내 사용할 수 있게 해준다. const http = require('http'); const url = require('url'); const fs = require('fs'); //http모듈에 포함된 createServer함수를 이용하여 서버를 만들어준다. const server = http.createServer((request, response)=>{ const parsedUrl = url.parse(request.url); //만약 Url의 querystring이 /index.html이라면 index.html을 콜백해준다. if(parsedUrl.query == 'index.html'){ response.writeHead(200,{'Content-Type':'text/html'}); fs.readFile(`./${parsedUrl.query}`, 'utf8',(err,data)=>{ response.end(data); }); //index.html이외의 query를 가지고 있다면, 오류페이지를 띄워준다. }else{ response.writeHead(404,{'Content-Type':'text/html'}); response.end("404 Page Not Found"); } }); //listen(PORT, function)으로 서버를 실행시켜준다. server.listen(80,()=>{ console.log("Server_running.."); })
from http://awlhdla.tistory.com/137 by ccl(A) rewrite - 2021-12-29 20:00:47