Rubberduck-Debugging

nodeJS express 본문

개발자/20181127 교육과정

nodeJS express

P缶 2019. 1. 8. 12:33

1. Express 소개

-경량 HTTP 웹 프레임워크
--요청과 응답
--미들웨어 사용
--템플릿 엔진

-설치
npm install express

2. Express 생성 및 시작
- var express = require('express');
- var app = exspress();

- app.listen(3000);

3. Http 모듈 서버와 Express 사용하기
  var http = require('http');
  var express = require('express');
  var app = express();

  http.createServer(app).listen(3000); 

4. Express 미들웨어
   -요청 분석 , 처리하는 모듈
   -여러 개의 미들웨어로 구성




미들웨어 사용 설정
-app.use(미들웨어)

app.use(function(req,res){
    res.send('Express');
});


5. Express 라우팅 (routing)
-요청 -> 요청 처리 미들웨어로 분배
-HTTP Method 별로 라우팅
-URL 경로 별로 라우팅

*    라우팅 (method 별로)
 // GET 요청 - Hello Express로 응답
app.get('/', function (req, res) {});
 // POST 요청 - 응답
app.post('/', function (req, res) {});

    라우팅(경로 별로)
// /user 경로에 GET 요청 - 응답
app.get('/user', function (req, res) {});
// /items 경로에 GET 요청 - 응답
app.get('/items', function (req, res) {});

6. Express 요청 분석
  -요청 분석 
  -- req.query : 쿼리 문자열 
  -- req.path : 요청 URL 중 경로 
  -- req.params : URL의 파라미터 
  -- req.cookie : 요청 메시지 내 쿠키(쿠키 파서 필요) 
  -- req.body : 요청 메시지 바디 분석(바디 파서 필요)

  -응답 (다양한 응답 메서드)
  -- res.json() : JSON 응답 메시지 전송
  -- res.redirect() : 리다이렉션 응답 전송
  -- res.render() : 템플릿으로 렌더링
  -- res.send() : JSON, HTML, Buffer 전송, 메시지 헤더에 Content-Type 자동 설정
  -- res.sendStatus() : 상태 코드와 상태 메시지 전송
  -- res.status() : 상태 코드 설정. 응답 메소드 종료 안함
  -- res.download() : 파일 다운로드

7. Express 미들웨어
  미들웨어 기반의 프레임 워크
  -connect
  -Express
 
  미들웨어
  -작은 단위 모듈
  -요청과 응답 처리 함수 형태

  Express 앱의 요청 다루기
  -하나의 미들웨어에서 요청 분석 응답 마무리
  -여러 미들웨어를 거쳐서 요청과 응답 마무리

  미들웨어 설정 하기
  app.use(sayHello); 
  function sayHello(req, res) {
     res.send('Hello Express!!'); 
  }
 
 HTTP 메서드별 미들웨어 설정
 app.get('/movies' , showMovieList);
 app.post(‘/movies’, addMovieInfo);
 app.put(‘/movies/:id’, updateMovieInfo);
 
 다수의 미들웨어 조합
 -다음 미들웨어 실행
  app.use(function(req, res, next) {
    console.log(‘Hello Express');
    // 다음 미들웨어가 동작하도록 next 호출
    next();
  });
 
(샘플)
// 콘솔에 로그를 남기는 미들웨어 - 다음 미들웨어 실행
app.use(function(req, res, next) {
            var now = new Date();
            console.log(now.toDateString() + ' - url : ' + req.url);
            // 다음 미들웨어 실행
           next();
});
// 응답을 하는 미들웨어 - 다음 미들웨어 실행 안함
app.use(function(req, res) {
            res.send('Hello Express!!');
});


//하나의 요청에 다수 미들웨어
// 두 미들웨어를 스택 형태로 설정
app.use(logger, sayHello);
// next()를 호출해야 다음 미들웨어 실행
function logger(req, res, next) {
 next();
}
// 다음에 실행될 미들웨어가 없으면 next를 사용하지 않아도 된다.
function sayHello(req, res) { // 응답하기 }


-내장 미들웨어, 써드 파티 미들웨어
--내장 미들웨어 : 별도 설치 불필요
 express.static

-써드 파티 미들웨어 : 설치해야 사용 가능
    var cookieParser = require('cookie-parser');
    // 쿠키 분석 용 미들웨어
    app.use(cookieParser());


정적 파일 요청 처리 미들웨어
-정적파일 서비스
app.use(express.static(‘images’));

-정적 파일 요청 
SERVER-ADDRESS/cute1.jpg -> ./images/cute1.jpg 
SERVER-ADDRESS/images/cute1.jpg -> ./images/image/cute1.jpg

정적 파일 위치 설정 - 다수 가능
첫 번째 미들웨어 서비스 실패 
- 다음 미들웨어 진행 
-- app.use(express.static('public')); 
-- app.use(express.static(‘files'));


가상 경로 설정 
app.use('/static', express.static(‘files’));

정적 파일 요청 
SERVER-ADDRESS/static/image.png -> ./files/image.png  

----------------------------------------------------------------
실습_1
var express = require('express');
var app = express();

app.use(function(req, res) {
    res.send('Hello Express');
});

app.listen(3000);

----------------------------------------------------------------
실습_2
var express = require('express');
var app = express();


app.use(function(req, res, next) {
   var now = new Date();
   console.log(now.toDateString() + ' - url : ' + req.url);
   next();
});

app.use(function(req, res) {
   res.send('Hello Express!!');
});

app.listen(3000);

-----------------------------------------------------------------
실습_3
var express = require('express');
var app = express();

app.use(express.static(__dirname + '/images'));

app.use(function(req, res) {
res.send('Hello Express');
});

app.listen(3000);




'개발자 > 20181127 교육과정' 카테고리의 다른 글

mongodb 시작  (0) 2019.01.14
nodeJs routing  (0) 2019.01.09
nodeJS get, post , 실습  (0) 2019.01.07
nodeJS http  (0) 2019.01.07
nodeJs npm module  (0) 2019.01.07