ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] Express 모듈을 이용한 간단한 RESTful API 의 구현
    Development/node.js 2013. 7. 16. 09:06
    Node.js 가 등장한 이후 간단히 테스트 목적의 웹 서버를 만드는 일이 손쉬워졌습니다. 단순한 Static 컨텐츠의 노출이 아닌 이상 닷넷을 이용하던 자바를 이용하던 뭔가 무거운 개발도구를 실행하고 코드 몇 줄을 넣은 후 컴파일 해야 했다면 Node.js 는 그런 번거로움과 불필요함을 한방에 날려주고 있습니다.

    새롭게 옮긴 직장에서 고객사의 PUT Request 에 대한 처리를 해야 할 일이 생겼는데 고객사의 API 에 대고 신나게 테스트를 할 수 있는 것도 아니고 해서 간단하게 가상머신에 Node.js 와 Express 모듈을 이용하여 RESTful API (..라고 적었지만 그냥 PUT Request 를 처리하는...) 를 만들어 봤습니다. 혹시나 RESTful API 의 CRUD 액션을 간단히 구현할 필요가 있으신 분들 참고하시라고 올려둡니다. Node.js 와 Express 모듈을 설치하신 뒤 소스코드를 참고해서 보시면 됩니다. REST 호출 이외에도 처리를 위해 Jade 모듈도 설치후 설정이 들어가 있는데요, 이 부분은 필요하신 경우 선택적으로 쓰시면 되겠습니다.

    (참고로 현재 시점에서의 Node.js 와 Express 최신 버전을 따르고 있기 때문에 보시는 시점에 따라 해당 엔진과 모듈의 행동양태가 변경되면 동작하지 않을 수도 있습니다 ^^;;)

    // express_server.js
    var express = require('express');
    var app = express();
    
    app.configure(function() {
    	app.set('views', __dirname + '/views');
    	app.set('view options', { layout: false });
    	app.use(express.methodOverride());
    	app.use(express.bodyParser());
    	app.use(app.router);
    	app.use(express.static(__dirname + '/public'));
    	console.log('configure successful...');
    	console.log('view directory is ' + __dirname + '/views');
    	console.log('static directory is ' + __dirname + '/public');
    });
    
    app.get('/hello', function(req, res) {
    	res.render('index.jade', {
    			message:'hello world'
    	});
    });
    
    // TYPE 1 (RESTful) : call "/puttest/3"
    app.put('/puttest/:id', function(req, res) {
    	res.send('received id :' + req.params.id);
    });
    
    // TYPE 2 (Traditional) : call "/puttest" with body parameter "id=9" then
    app.put('/puttest', function(req, res) {
    	res.send('received id :' + req.body.id);
    });
    
    app.configure('production', function() {
    	app.use(express.logger());
    	app.use(express.errorHandler());
    });
    
    app.configure('development', function() {
    	app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    });
    
    app.listen(81);
    

    위의 소스코드에서 사용한 Jade 템플릿은 아래와 같이 간단하게 되어 있습니다. 그냥 그렇구나 하시면 될 것 같습니다.
    // Jade 렌더링 테스트용 : /views/index.jade
    #{message}
    

    [ Node.js 의 기초를 위한 추천 도서 ]
    인기 저자 윤인성 작가의  "모던 웹을 위한 Node.js 프로그래밍" [자세히보기]


    - NoPD -

    댓글 0

NoPD