Node.js 가 대세가 되고 여러 곳에서 사용함에 따라, 학습을 시작하게 되었다.
먼저 간단하게 http 모듈과 express 모듈을 사용하여 웹 서버를 만드는 것을 해보았다.
Do it Node.js 강좌와 책을 보고 학습하고 기본적인 내용정도만 정리하려고 한다.
초심자가 학습할 수 있고 , 강의도 제공되기 때문에 좋은 책인 듯 하다.
해당 책을 구매해서 사용하는 것을 추천한다. ( 초기 학습에는 강좌와 책이 함께 있는 게 가장 좋은 듯 )
- http 모듈을 이용한 웹 서버 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var http = require('http'); var server = http.createServer(); var host = 'localhost'; var port = 3000; server.listen(port, host, 50000, function(){ console.log('웹서버 실행됨.'); }); server.on('connection', function(socket){ console.log('클라이언트가 접속했습니다.'); }); server.on('request', function(req,res){ console.log('클라이언트 요청이 들어왔습니다.'); // console.dir(req); res.writeHead(200, {"Content-Type":"text/html;charset=utf-8"}); res.write('<h1>웹 서버로 부터 받은 응답입니다. </h1>'); res.end(); }); | cs |
>> 결과
- http 모듈을 이용한 웹 서버 만들기 ( 사진 보여주기 >> 사진 경로 지정 필요 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var http = require('http'); var fs = require('fs'); var server = http.createServer(); var host = 'localhost'; var port = 3000; server.listen(port, host, 50000, function(){ console.log('웹서버 실행됨.'); }); server.on('connection', function(socket){ console.log('클라이언트가 접속했습니다.'); }); server.on('request', function(req,res){ console.log('클라이언트 요청이 들어왔습니다.'); var filename = './doggy.png'; fs.readFile(filename, function(err, data){ res.writeHead(200, {"Content-Type":"image/png"}); res.write(data); res.end(); }); }); | cs |
>> 결과
- express 를 이용한 간단한 웹 서버
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var express = require('express'); var http = require('http'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // 미들웨어 함수 등록 (클라이언트 요청이 들어 왔을 때, 호출 됨) app.use(function(req, res, next){ console.log('첫 번째 미들웨어 호출됨'); res.writeHead(200, {"Content-Type" : "text/html;charset=utf8"}); res.end('<h1>서버에서 응답한 결과입니다. </h1>'); }); // 서버 생성 var server = http.createServer(app).listen(app.get('port') , function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')); }); | cs |
>> 결과
- express 를 이용한 간단한 웹 서버 2 ( 중복 미드웨어 사용 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var express = require('express'); var http = require('http'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // 미들웨어 함수 등록 ( 클라이언트 요청 들어오면 호출됨 ) app.use(function(req,res,next){ console.log('첫 번째 미들웨어 호출됨'); req.user = "gohn"; // 그 다음 미들웨어가 요청을 받아서 처리한다. next(); }); app.use(function(req, res, next){ console.log('두번째 미들웨어 호출'); res.writeHead(200, {"Content-Type" : "text/html;charset=utf-8"}); res.end('<h1>서버에서 응답한 결과입니다. '+ req.user + '</h1>') }); // 서버 생성 var server = http.createServer(app).listen(app.get('port'), function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')) ; }); | cs |
>> 결과
- expresss를 사용한 Json 객체 보내기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | var express = require('express'); var http = require('http'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // 미들웨어 함수 등록 ( 클라이언트 요청 들어오면 호출됨 ) app.use(function(req,res,next){ console.log('첫 번째 미들웨어 호출됨'); req.user = "gohn"; // 그 다음 미들웨어가 요청을 받아서 처리한다. next(); }); app.use(function(req, res, next){ console.log('두번째 미들웨어 호출'); res.writeHead(200, {"Content-Type" : "text/html;charset=utf-8"}); // res.end('<h1>서버에서 응답한 결과입니다. '+ req.user + '</h1>'); // 객체를 넘겨본다. var person = {name:'반지의제왕', age:'1000'} ; // res.send(person); var personStr = JSON.stringify(person); res.end(personStr); }); // 서버 생성 var server = http.createServer(app).listen(app.get('port'), function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')) ; }); | cs |
>> 결과
- redirect 하는 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var express = require('express'); var http = require('http'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // 미들웨어 함수 등록 (클라이언트 요청이 들어 왔을 때, 호출 됨) app.use(function(req, res, next){ console.log('첫 번째 미들웨어 호출됨'); res.redirect('http://melonicedlatte.com'); }); // 서버 생성 var server = http.createServer(app).listen(app.get('port') , function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')); }); | cs |
- 요청한 파라미터 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var express = require('express'); var http = require('http'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // 미들웨어 함수 등록 (클라이언트 요청이 들어 왔을 때, 호출 됨) app.use(function(req, res, next){ console.log('첫 번째 미들웨어 호출됨'); var userAgent = req.header('User-Agent'); var paramName = req.query.name; res.send('<h3>서버에서 응답. User-Agent => ' + userAgent + '</h3>' + '<h3> paramName => ' + paramName + '</h3>' ); }); // 서버 생성 var server = http.createServer(app).listen(app.get('port') , function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')); }); | cs |
>> 결과
- 특정 폴더를 자유롭게 접근 할 수 있게 하는 static 모듈
같은 폴더에 public 에 이미지를 넣어둔다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | var express = require('express'); var http = require('http'); var static = require('serve-static'); var path = require('path'); var app = express(); // express 포트 설정 app.set('port', process.env.PORT || 3000); // public 폴더 안에 있는 파일을 사용할 수 있는 static app.use(static(path.join(__dirname, "public"))); // 미들웨어 함수 등록 (클라이언트 요청이 들어 왔을 때, 호출 됨) app.use(function(req, res, next){ console.log('첫 번째 미들웨어 호출됨'); var userAgent = req.header('User-Agent'); var paramName = req.query.name; res.send('<h3>서버에서 응답. User-Agent => ' + userAgent + '</h3>' + '<h3> paramName => ' + paramName + '</h3>' ); }); // 서버 생성 var server = http.createServer(app).listen(app.get('port') , function(){ console.log('익스프레스로 웹 서버 실행 : ' + app.get('port')); }); | cs |
>> 결과