커넥트

노드는 기본적으로 HTTP 모듈을 가지고 있고, Connect는 HTTP 모듈에 여러 플러그인을 추가할 수 있는 미들웨어 프레임워크이다. Express는 Connect를 내장하고 있는 웹 프레임워크이다.

  • 커넥트 애플리케이션 준비

    var connect = require('connect');
    var app = connect();
    app.listen(3000);
  • 커넥트 미들웨어 동작방식
    커넥트에서 미들웨어 컴포넌트는 req, res, next() 세 인자를 가진다.

    function logger(req, res, next) {
      consloe.log('%s %s', req.method, req.url);
      next();
    }

    next()를 실행해 디스패처에 제어를 넘겨준다.

    var connect = require('connect');
    var app = connect();
    app.use(logger);
    app.listen(3000);
  • 미들웨어 순서의 중요성

    function logger(req, res, next) {
      consloe.log('%s %s', req.method, req.url);
      next();
    }
    function hello(req, res) {
      res.setHeader('Content-Type', 'text/plain');
      res.end('hello world');
    }
    connect().use(logger).use(hello).listen(3000);

    미들웨어 순서는 인증과 같은 경우에 사용하면 좋다

    connect()
      .use(looger)
      .use(restrictFileAccess)
      .use(serveStaticFiles)
      .use(hello)

'Framework > Nodejs' 카테고리의 다른 글

이메일 발송  (0) 2017.07.13
MVC model  (0) 2017.07.07
mocha  (0) 2017.07.05
미들웨어(1):cookieParser, bodyParser, limit, query  (0) 2017.04.05
FileUpload  (0) 2017.03.26

FileUpload

body-parser는 파일을 업로드하는 경우에 json과 urlencoded 양식 제출만 처리한다. multi-part를 처리하기 위해서 connect-busboy 모듈을 사용하였다.

주의해야 할 점은 이미지를 저장하고자 하는 폴더가 경로에 있어야한다.

var express = require('express');
var fs = require('fs');
// var bodyParser = require('body-parser');
var busboy = require('connect-busboy');
var app = express();
 
// app.use(bodyParser.urlencoded({extended: false}));
app.use(busboy());
 
app.listen(3303, function() {
  console.log("Server Start");
});
 
app.get('/', function(req, res) {
  fs.readFile('index.html', function(err, data) {
    res.writeHead(200, { 'Content-Type': 'text/html'});
    res.end(data, function(error) {
      console.log(error);
    })
  })
})
 
app.post('/upload', function(req, res) {
  var fstream;
  req.pipe(req.busboy);
  req.busboy.on('file', function(fieldname, file, filename) {
    console.log("Uploading: " + filename);
    fstream = fs.createWriteStream(__dirname + '/files/' + filename);
    file.pipe(fstream);
    fstream.on('close', function() {
      res.redirect('back');
    });
  });
});


'Framework > Nodejs' 카테고리의 다른 글

이메일 발송  (0) 2017.07.13
MVC model  (0) 2017.07.07
mocha  (0) 2017.07.05
미들웨어(1):cookieParser, bodyParser, limit, query  (0) 2017.04.05
connect  (0) 2017.04.04

+ Recent posts