express-generator를 이용하면 빠른시간에 기본 템플릿을 만들고 http server를 구동하여 볼수 있습니다. 이제 원하는 restful API를 만들기 위해 Router라는 것을 정의해야 합니다.
entry 지점은 bin/www에 생성됩니다. 여기서는 http server를 구동하고 app.js를 binding합니다. 포트를 변경하거나 http대신 https로 교체할 수 있습니다.
var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http'); // https로 변경할 수 있습니다.
/**
* Get port from environment and store in Express.
*/
// http 리슨 포트를 변경합니다.
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
---------------- 이하 생략 ----------------------
generator에 의해 생성된 app.js코드입니다.
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
module.exports = app;
기본적으로 2개의 Router가 생성되어 있습니다. 하나는 indexRouter로 서비스 기본 URL요청을 처리합니다.
핸들러코드의 경로는 ./routes/index로 지정되어 있습니다. myapp/routes/index.js파일을 Import하는 것입니다.
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
위와 같이 router를 선언하고 exports 해주면 됩니다. 기본 URL (/)에 대한 Handler함수가 정의 되어 있으며 res.render함수를 호출하여 html로 응답하고 있습니다.
사전 생성된 indexRouter를 참조하여 추가할 API를 생성해보도록 하겠습니다.
routers/test.js파일을 생성합니다.
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
let username = req.query.username;
res.send(JSON.stringify({
code : 200,
yourname : username
}));
});
module.exports = router;
HTTP Get Method는 url Parameter로 값을 전달합니다. express는 req.query에 해당 파라메터를 Parsing하여 전달합니다.
즉 아래와 같이 호출하면 서버는 req.query.username으로 간단하게 참조할 수 있습니다.
http://localhost:3000/test?username=test
이제 app.js에 새로 생성한 Router를 추가합니다.
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var TestRouter = require('./routes/test');
var app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/test', TestRouter);
module.exports = app;
브라우져에서 테스트를 해보면 아래와 같이 JSON문이 표시됩니다.
이런식으로 Router를 추가하여 필요한 Handler를 정의해서 사용하시면 됩니다. 3편에서는 보다 복잡한 예제들을 소개 하겠습니다.
읽어주셔서 감사합니다.
'Node.js' 카테고리의 다른 글
Node.js Socket Programming (1) (0) | 2023.02.18 |
---|---|
Node.js로 Restful API Server 만들기(5) (1) | 2023.02.16 |
Node.js로 Restful API Server 만들기(4) (0) | 2023.02.15 |
Node.js로 Restful API Server 만들기(3) (0) | 2023.02.14 |
Node.js로 Restful API Server 만들기(1) (0) | 2023.02.12 |