반응형
express.Router
- 모듈형 루트 핸들러를 만들어주는 것
- 라우터를 모듈로 만들어서 일부 루트(경로)를 정의하고 메인 앱의 경로에 라우터 모듈 마운트할 수 있도록 함
기본 구문
- 외부 파일 : router.js
- express.Router() : 외부에서 사용할 수 있도록 모듈화하기 위한 명령어
- .get ~ : 라우터 객체의 루트 정의
- module.exports : 라우터 객체 모듈화
/* router.js */
// express 객체 생성
const express = require('express');
// express router 객체 생성
const router = express.Router();
// 루트(경로) 정의
router.get('/', function (req, res) {
res.send('Hello World!');
});
// 라우터 모듈 생성
module.exports = router;
- 메인 파일 : main.js
- 모듈 호출 및 루트 설정
- const routeTest = require('./router') : 라우터를 모듈화한 파일의 경로와 이름 입력, 모듈화된 라우터를 변수에 저장하여 객체 생성
- app.use('/', routeTest) : 기본 경로 지정, 예를 들어 라우터에서 정의한 경로가 /hello이고 메인 파일에서 지정한 결로가 /hello 일 경우, 기본경로/hello/hello 가 됨. 두번째 인자에는 라우터 객체 입력
- 모듈 호출 및 루트 설정
/* main.js */
// express 객체 생성
const express = require('express');
// express의 새 인스턴스 할당
const app = express();
// router 모듈 호출
// require 안에 모듈화한 파일의 이름 입력, 단 확장자 제외
// use 안에 기본 경로와 모듈 객체 정의
const routeTest = require('./router');
app.use('/', routeTest);
// 해당 포트로 서버를 시작하고 들어오는 요청 수신
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- 터미널에서 main.js 파일 실행
node main.js
- 실행 결과
데이터베이스를 포함한 라우터 모듈 생성
- 외부 파일 : db_connector.js
// mssql 객체 생성
const sql = require('mssql');
// DB 연결 설정
const config = {
user: '~',
password: '~',
server: '~',
database: '~',
encrypt : false, // IP address access
trustServerCertificate: true // Trust self-signed certificate
};
// DB 연결
sql.connect(config, (err) => {
if (err) {
console.error('Error connecting to database:', err);
return;
}
console.log('Connected to database!');
});
// DB 모듈화
module.exports = { sql };
- 메인 파일 : main.js
// express 객체 생성
const express = require('express');
// express의 새 인스턴스 할당
const app = express();
// mssql DB가 연동된 라우터 모듈을 객체화
const { sql } = require('./db_connector');
// 경로 설정, DB 값 호출
// 주의 : 모듈화된 DB 객체는 request().query()가 아닌 query() 사용
app.get('/test', (req, res) => {
sql.query('SELECT * FROM testTable', (err, result) => {
if (err) {
console.error('Error executing query:', err);
res.status(500).send('Error executing query');
return;
}
res.json(result.recordset);
});
});
- 터미널에서 main.js 파일 실행
node main.js
- 실행 결과
참고
반응형