Back Ground

NodeJS - Express모듈 서버 만들기 [ES5] 본문

Javascript/Node.js

NodeJS - Express모듈 서버 만들기 [ES5]

Back 2018. 9. 18. 21:55


- Express 작업 영역 


미들웨어 
함수를 나눠서 작업 한다.



express는 보통 미들웨어 부분을 처리하고 

마지막으로 라우터 설정하는 역활을한다.

RestFul API 방식으로의 과정을 생각하면 될 것같다.







- Express 다운로드


현재 Project에서 npm을 사용 할 것이기 때문에


cmd 창

1
>npm init 
cs

그러면 프로젝트 명이 무엇이고 설정에 관한걸 묻는데


그게 귀찮으면 다 Y로 

1
>npm init -y
cs

이렇게 하면된다.


그렇다면 package.json이 생성 된걸 알 수 있다.


그 후 express를 설치한다.  

1
>npm install express --save
cs

를 설치한다. (--save) 는 pakage.json에 저장한다는 뜻.




 Express 모듈 사용하기


Express 함수

set(name, value)

 서버 설정을 위한 속성을 지정합니다. set( ) 메소드로 지정한 속성은 get( ) 메소드로 꺼내어 확인할 수 있습니다.

 get(name)

 서버 설정을 위해 지정한 속성을 꺼내 옵니다.

 use([path,] function [, function...])

 미들웨어 함수를 사용하도록 합니다.

 get([path,] function)

 특정 패스로 요청된 정보를 처리합니다.


메소드

1
.use(function(req,res,next){
cs

매개변수

.use(요청,응답, 다음 use);





중요!

1
2
3
app.use(function(req,res,next)){ 
    next();
});
cs

 다음 use를 호출할때 

 매개변수(next)의 함수() 를 실행하면 

 컴파일상 다음 use()함수를 찾게 된다.







예제)

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
var http = require('http');
var express =require('express');
 
var app = express();// express 객체를 실행
 
//req 응답 , res 요청 , next 다음 use를 찾는다.
app.use(function(req,res,next){
    console.log("첫번째 미들웨어"); 
    
    //헤더
    res.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}); 
 
    //DOM
    res.write("<!DOCTYPE html>");
    res.write("<html>");
    res.write("<head>");
    res.write("    <title>Me server</title>");
    res.write("    <meta charset='UTF-8'>");
    res.write("    <meta name='description'' content=''>");
    res.write("    <meta name='keywords' content=''>");
    res.write("</head>");
    res.write("<body>");
    res.write("<div>안녕하세요</div>");
    res.write("<div>NodeJS 실습 1 미들웨어 입니다.</div>");
 
    //응답 종료
    //res.end();  // end해 버리면 다음 use를 찾지 못하고 종료한다. 
    //(2번째로 use로 넘어가긴한다 -콘솔은 나옴- end했는데 write 작업에서 터진다. )
    //end 
    next();       //다음 use를 찾는다.
 
});
 
app.use(function(req,res,next){
    console.log("두번째 미들웨어"); 
 
    res.write("<div>NodeJS 실습 2 미들웨어 입니다.</div>");
    res.write("</body>");
    res.write("</html>");
 
    //응답 종료
    res.end(); 
});
 
//createServer에다가 app을 넣어주면 express에서 생성한 것을 넣어주면 생성된다.
//아까와 거꾸로 만든 후 createServer에 넣어준다.
http.createServer(app).listen(3000,function(){
    console.log("express 서버 시작");
});
 
cs



express방식은 

기존에 createServer를 만든 후 

server.on('request')를 함수에 추가 하고

server를 listen을 하는 방식이 아닌

createServer를 생성할때 매개변수로

express함수를 오버라이딩하여 

listen하는 방식으로 처리한다.





중요!

Response.end를 한후 next use하면 

다음 use로 넘어간다.

하지만 

Response.write를 한순간 end(종료)했는데

write를 쓰려고하면 에러가 발생하고

end를 쓰지않는다면 서버는 계속 대기중일 것이다.


그렇기에 

처음과 마지막 use를 만들어 둔 상태에서 

중간에 use함수를 만드는걸 추천하다.


[시작 use]


[작업 use] <-


[끝 use {res.end()} ]




Comments