Express Module을 사용하는 이유? http만 모듈을 사용해서는 시간과 노력이 많이 드는 문제가 생김.

 

-익스프레스 서버 객체가 가지고 있는 메소드-

메소드 이름 설명
set(name,value) 서버 설정을 위한 속성을 지정합니다. set() 메소드로 지정한 속성은 get()메소드로 꺼내어 확인할 수 있습니다.
get(name) 서버 설정을 위해 지정한 속성을 꺼내 옵니다.
use([path,]function[,function...]) 미들웨어 함수를 사용합니다.
get([path,] function) 특정 패스로 요청된 정보를 처리합니다.

-메소드 set 의 속성 -

속성이름 설명
env 서버 모드를 설정합니다.
views 뷰들이 들어 있는 폴더 또는 폴더 배열을 설정합니다.
view engine 디폴트로 사용할 뷰 엔진을 설정합니다.
//Express 기본 모듈 불러오기
var express = require('express'),http = require('http');

//익스프레스 객체 생성
var app = express();

//기본 포트를 app 객체에 속성으로 설정
app.set('port',process.env.PORT || 3002);

//Express 서버 시작
http.createServer(app).listen(app.get('port'),function(){
    console.log('익스프레스 서버를 시작했습니다 : '+app.get('port'));
});

 

-미들웨어로 클라이언트에 응답 보내기-

 

 

var express = require('express');
var http = require('http');

var app = express();

app.use(function(req,res,next){
   console.log('첫 번째 미들웨어에서 요청을 처리함.') ;
    
    res.writeHead('200',{'content-Type':'text/html;charset=utf8'});
    res.end('<h1>Express 서버에서 응답한 결과입니다.</h1>');
});

http.createServer(app).listen(3000,function(){
    console.log('Express 서버가 3000번 포트에서 시작됨.');
})

-출력-

 

-여러 개의 미들웨어를 등록하여 사용하는 방법-

var express = require('express');
var http = require('http');

var app = express();

app.use(function(req,res,next){
   console.log('첫 번째 미들웨어에서 요청을 처리함.') ;
    
    req.user = 'mike';
    next();
});

app.use('/',function(req,res,next){
    console.log('두 번째 미들웨어에서 요청을 처리함.') ;
    
   res.writeHead('200',{'content-Type':'text/html;charset=utf8'});
    res.end('<h1>Express 서버에서 '+req.user+' 응답한 결과입니다.</h1>');
    });

http.createServer(app).listen(3000,function(){
    console.log('Express 서버가 3000번 포트에서 시작됨.');
})

use 메소드를 이용해 미들웨어를 만들어 준다음 다음 미들웨어로 넘길 때는 next()함수를 사용하여 넘김.

 

-익스프레스의 요청 객체와 응답 객체 알아보기-

var express = require('express');
var http = require('http');

var app = express();

app.use(function(req,res,next){
   console.log('첫 번째 미들웨어에서 요청을 처리함.') ;
    
   res.send({name:"소녀시대",age:20});
  /*  next();*/
});

app.use('/',function(req,res,next){
    console.log('두 번째 미들웨어에서 요청을 처리함.') ;
    
   res.writeHead('200',{'content-Type':'text/html;charset=utf8'});
    res.end('<h1>Express 서버에서 '+req.user+' 응답한 결과입니다.</h1>');
    });

http.createServer(app).listen(3000,function(){
    console.log('Express 서버가 3000번 포트에서 시작됨.');
})

-출력결과-

메소드 이름 설명
send([body]) 클라이언트에 응답 데이터를 보냅니다.전달할 수 있는 데이터는 HTML 문자열,Buffer 객체,JSON 객체,JSON 배열입니다.
status(code) HTTP 상태 코드를 반환합니다. 상태 코드는 end()나 send() 같은 전송 메소드를 추가로 호출해야 전송할 수 있습니다.
sendStatus(statusCode) HTTP 상태 코드를 반환합니다. 상태 코드는 상태 메시지와 함께 전송됩니다.
redirect([status,]path) 웹 페이지 경로를 강제로 이동시킵니다.
render(view [, locals][,callback]) 뷰 엔진을 사용해 문서를 만든 후 전송합니다.

 

-redirect 메소드-

var express = require('express');
var http = require('http');

var app = express();

app.use(function(req,res,next){
   console.log('첫 번째 미들웨어에서 요청을 처리함.') ;
    
  res.redirect('http://google.co.kr');
});



http.createServer(app).listen(3000,function(){
    console.log('Express 서버가 3000번 포트에서 시작됨.');
})

  res.redirect 메소드를 사용하여 구글 페이지로 넘긴다.

 

-익스프레스에서 요청 객체에 추가한 헤더와 파라미터 알아보기-

var express = require('express');
var http = require('http');

var app = express();

app.use(function(req,res,next){
   console.log('첫 번째 미들웨어에서 요청을 처리함.') ;
    
 var userAgent = req.header('User-Agent');
 var paramName = req.query.name;
    
    res.writeHead('200',{'Content-Type':'text/html;charset=utf8'});
    res.write('<h1>Express 서버에서 응답한 결과입니다.</h1>');
    res.write('<div><p>User-Agent : '+userAgent+'</p></div>');
    res.write('<div><p>Param name : '+paramName+'</p></div>');
    res.end();
});



http.createServer(app).listen(3000,function(){
    console.log('Express 서버가 3000번 포트에서 시작됨.');
})

 

추가한 정보 설명
query 클라이언트에서 GET 방식으로 전송한 요청 파라미터를 확인합니다.
body 클라이언트에서 POST 방식으로 전송한 요청 파라미터를 확인합니다.
단, body-parser와 같은 외장 모듈을 사용해야 합니다.
예)req.body.name
header(name) 헤더를 확인합니다.

 

'For developer > Node.js' 카테고리의 다른 글

(Node.js)쿠키와 세션  (0) 2020.09.08
(Node.js)익스프레스로 웹 서버 만들기(2)  (0) 2020.09.08
(Node.js)서버관련  (0) 2020.09.07
(Node.js)파일처리 관련(1)  (0) 2020.09.06
(Node.js)클릭관련  (0) 2020.09.06

+ Recent posts