Node js-express 도입
Express.js
는 Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크다. 그러한 컴포넌트를 미들웨어(middleware)라고 하며,따라서
개발자들은 특정 프로젝트에 필요한 라이브러리를 어떤것이든 자유롭게 선택할 수 있으며,이는 개발자들에게 유연함과 수준 높은 맞춤식 구성을 보장한다.
쉽게 Express는 Node.js에서 사용가능한 프레임워크 이고 Npm의 일종이다.
Express 를 사용 하지 않은 code
member 조회 code
// 주제: 여러 개의 요청 처리하기 - 각 요청을 함수로 분리하기
const http = require('http')
const url = require('url')
const mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
//port: '3306',
database: 'studydb',
user: 'study',
password: '1111'
});
const server = http.createServer((req, res) => {
var urlInfo = url.parse(req.url, true);
if (urlInfo.pathname === '/favicon.ico') {
res.end();
return;
}
res.writeHead(200, {
'Content-Type': 'text/plain;charset=UTF-8'
});
if (urlInfo.pathname === '/member/list') {
list(urlInfo,req,res);
} else if (urlInfo.pathname === '/member/add') {
add(urlInfo,req,res);
} else if (urlInfo.pathname === '/member/update') {
update(urlInfo,req,res);
} else if (urlInfo.pathname === '/member/delete') {
remove(urlInfo,req,res);
} else {
res.end('해당 URL을 지원하지 않습니다!');
return;
}
});
server.listen(8000, () => {
console.log('서버가 시작됨!')
})
function list(urlInfo,req,res) {
var pageNo = 1;
var pageSize = 3;
if (urlInfo.query.pageNo) {
pageNo = parseInt(urlInfo.query.pageNo)
}
if (urlInfo.query.pageSize) {
pageSize = parseInt(urlInfo.query.pageSize)
}
var startIndex = (pageNo - 1) * pageSize;
pool.query('select mid, email from pms2_member limit ?, ?',
[startIndex, pageSize],
function(err, results) {
if (err) {
res.end('DB 조회 중 예외 발생!')
return;
}
for (var row of results) {
res.write(`${row.email}, ${row.mid}\n`);
}
res.end();
});
}
Express사용시!!!
Express 모듈을 이용해서 분리 해보기
// 주제:코드를 모듈로 분리 ! - 요청 핸들러를 호출하는 코드 분리
// =>
const mysql = require('mysql');
const express = require('./express02');
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
//port: '3306', 생략가능
database: 'studydb',
user: 'study',
password: '1111'
});
const app = express();
app.add('/member/list',(urlInfo,req,res)=>{
var pageNo = 1;
var pageSize = 3;
if (urlInfo.query.pageNo) {
pageNo = parseInt(urlInfo.query.pageNo)
}
if (urlInfo.query.pageSize) {
pageSize = parseInt(urlInfo.query.pageSize)
}
var startIndex = (pageNo - 1) * pageSize;
pool.query('select mid, email from pms2_member limit ?, ?',
[startIndex, pageSize],
function(err, results) {
if (err) {
res.end('DB 조회 중 예외 발생!')
return;
}
for (var row of results) {
res.write(`${row.email}, ${row.mid}\n`);
}
res.end();
});
// express 끝
app.listen(8000,()=>{
console.log('서버 실행 중 ....!!')
})
Express module 직접 만들어서 사용해보자
모듈을 따로 만들어서 사용하면 유지보수하기가 훨씬더 수월하다.
// 주제: 요청 핸들러를 관리 + 호출
// =>
const http = require('http')
const url = require('url')
module.exports = function(){
return{
requestHandlerMap:{},
add(url,handler){
this.requestHandlerMap[url] = handler;
},
getHandler(url){
return this.requestHandlerMap[url];
},
listen(port,callback){
var mapper = this;
const server = http.createServer((req, res) => {
var urlInfo = url.parse(req.url, true);
if (urlInfo.pathname === '/favicon.ico') {
res.end();
return;
}
res.writeHead(200, {
'Content-Type': 'text/plain;charset=UTF-8'
});
var handler = mapper.getHandler(urlInfo.pathname);
if(handler){
try{
handler(urlInfo,req,res);
}catch(err){res.end('실행중 오류 발생');}
}
else {
res.end('해당 URL을 지원하지 않습니다!');
return;
}
});
server.listen(port, callback);
} //listen
}; //return
}
npm install express --save 로 다운!!!!
모듈을 통해서 객체를 만들어줘야 한다.모듈은 함수이기 때문에 어플리케이션을 리턴한다.리턴 값을 제어 하기 위해서 함수로 담아둔다.
// 주제:Express 사용하기
// =>
const mysql = require('mysql');
const app = require('express')();
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
//port: '3306',
database: 'studydb',
user: 'study',
password: '1111'
});
//get 요청에 대해 핸들러를 등록하기
app.get('/member/list',(req,res)=>{
var pageNo = 1;
var pageSize = 3;
if (req.query.pageNo) {
pageNo = parseInt(req.query.pageNo)
}
if (req.query.pageSize) {
pageSize = parseInt(req.query.pageSize)
}
var startIndex = (pageNo - 1) * pageSize;
pool.query('select mid, email from pms2_member limit ?, ?',
[startIndex, pageSize],
function(err, results) {
if (err) {
res.end('DB 조회 중 예외 발생!')
return;
}
for (var row of results) {
res.write(`${row.email}, ${row.mid}\n`);
}
res.end();
});
});
// express 끝
app.listen(8000,()=>{
console.log('서버 실행 중 ....!!')
})
express 모듈에 urlInfo 있기에 따로 넣지 않아도 적용된다.위에 말했듯이 express 는 모듈이 들어있는 프레임 워크 이기에코드가 훨씬더 간결해진다.
모듈을 통해서 객체를 만들어줘야 한다.모듈은 함수이기 때문에 어플리케이션을 리턴한다.리턴 값을 제어 하기 위해서 함수로 담아둔다.
// =>
const mysql = require('mysql');
const app = require('express')();
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
//port: '3306',
database: 'studydb',
user: 'study',
password: '1111'
});
//get 요청에 대해 핸들러를 등록하기
app.get('/member/list',(req,res)=>{
var pageNo = 1;
var pageSize = 3;
if (req.query.pageNo) {
pageNo = parseInt(req.query.pageNo)
}
if (req.query.pageSize) {
pageSize = parseInt(req.query.pageSize)
}
var startIndex = (pageNo - 1) * pageSize;
pool.query('select mid, email from pms2_member limit ?, ?',
[startIndex, pageSize],
function(err, results) {
if (err) {
res.end('DB 조회 중 예외 발생!')
return;
}
for (var row of results) {
res.write(`${row.email}, ${row.mid}\n`);
}
res.end();
});
});
// express 끝
app.listen(8000,()=>{
console.log('서버 실행 중 ....!!')
})
express 모듈에 urlInfo 있기에 따로 넣지 않아도 적용된다.위에 말했듯이 express 는 모듈이 들어있는 프레임 워크 이기에코드가 훨씬더 간결해진다.
Express 기본 사용법
//1) 주제: express 사용하기 !!!
//2) express 모듈 로딩하기
const express = require('express')
// => express 객체 만들기
//= > 웹 서버 객체 준비
const app =express();
//3)=> URL 에 대해 함수를 연결하기
app.get('/test01',(req,res)=>{
res.writeHead(200, {'Content-Type':'text/plain;charset=UTF-8'});
res.write('test01....ok');
res.end();
})
//4) 서버 실행 !!
app.listen(8000, () => {
console.log('서버 실행 중...!!!');
});
'프로그래밍 > Node JS' 카테고리의 다른 글
[Nodejs]Node js 란? (0) | 2018.08.07 |
---|