Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- MariaDB
- 유효성
- 알고리즘
- resultType="hashmap"
- interface default
- SQL
- BCrypt
- ${}
- cmd mariaDB
- git message
- it지원
- git
- 포워드 엔지니어링
- nodejs http
- REST
- git 명령어
- bubblesort
- nodejs
- templet
- #{}
- gradle 설치
- 최대값 최소값
- container-fluid
- $(document).on
- 전역객체
- a href="#" onclick="return false"
- 자바 로또
- 자바 예상문제
- map형태 jsp와 mapper
- $('input [name=
Archives
- Today
- Total
Rubberduck-Debugging
nodeJs routing 본문
1. 라우팅 : 클라이언트의 요청을 미들웨어로 분배
라우팅 종료
-요청 경로
-요청 메서드
-요청경로 + 요청 메서드
*메서드 별 라우팅 함수 (path : 요청 경로 , callback : 요청 담당 미들웨어)
app.all(path, callback [, callback …])
app.get(path, callback [, callback …])
app.post(path, callback [, callback ...])
app.put(path, callback [, callback ...])
app.delete(path, callback [, callback …])
*메서드 경로 별 라우팅
app.get('/', function (req, res) {
res.send('GET request, /');
});
app.delete('/', function(req, res) {
res.send('DELETE method');
});
app.put('/item/1', function(req, res) {
res.send('PUT method, /item/1');
});
app.all('/all', function(req, res) {
res.send('모든 HTTP 메소드, /all');
});
동적 파라미터
-동적 파라미터
app.get(‘/user/:item’, [Callback]);
-적용 요청 경로
/user/1234
/user/abcd
-파라미터값 얻기
req.params.item
-다수의 동적 파라미터 사용 가능
라우팅과 요청 파라미터
app.get('/user/:id', function (req, res) {
var userId = req.params.id;
...
});
app.get('/movies/:movieId/:actor', function (req, res) {
var movieId = req.params.movieId;
var actor = req.params.actor;
...
});
express의 route 함수
app.route(‘/book')
.get(function(req, res) {
res.send('Get a random book');
})
.post(function(req, res) {
res.send('Add a book');
})
.put(function(req, res) {
res.send('Update the book');
});
라우팅 로직 별도 분리 ( router.js )
var express = require(‘express’);
var router = express.Router();
router.get('/hello', sayHello);
router.get('/howAreYou/:who', sayThankYou);
module.exports = router;
라우팅 로직 설정 ( app.js )
app.use(require('./router'));
상대 경로 요청 처리 가능
/greeting/hello 경로의 요청
app.use('/greeting', require('./greetingRouter’));
greetingRouter 의 라우팅 코드
router.get('/hello', sayHello);
/eat/cooking 경로의 요청 담당 라우팅 모듈
app.use(‘/eat’, require('./eatingRouter’));
eatingRouter 의 라우팅 코드
router.get('/cooking', cook);
에러 처리 미들웨어
-Express 에러 처리 방법
--미들웨어 내부에서 처리
각각 미들웨어에서 에러 처리
에러 처리 로직이 제각각
에러 처리 코드 중복
--에러 처리 미들웨어에게 위임
일관된 에러 처리 가능
에러 파라미터
app.use(function(err, req, res, next) {
res.status(500).send(‘에러 발생!');
});
에러 처리 미들웨어로 에러 전달
app.use(function(req, res, next) {
var error = new Error(‘에러 메세지’)
error.code = 100;
return next(error);
});
환경 별 에러 처리 코드
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.end(err.stack);
});
}
else {
app.use(function(err, req, res, next) {
res.status(err.code || 500);
res.end('잠시 후 다시 시도해주세요');
});
}
-----------------------------------------------------------
실습_1
var express = require('express');
var router = express.Router();
router.get('/hello', sayHello);
router.get('/howAreYou/:who', sayThankYou);
function sayHello(req, res) {
res.send('Hello Router');
}
function sayThankYou(req, res) {
var who = req.params.who;
res.send('Fine Thank You ' + who + " And you?");
}
module.exports = router;
실습_2 (app.js)
var express = require('express');
var app = express();
app.use(require('./greetingRouter'));
app.listen(3000);
//
----------------------------------------------------------
실습_2 (err.js)
var express = require('express');
var app = express();
app.use(require('./greetingRouter'));
app.listevar express = require('express');
var app = express();
app.get('/:value', work);
app.use(errorHandler);
app.listen(3000);
function work(req, res, next) {
var val = parseInt(req.params.value);
// 입력 파라미터 체크
if ( ! val ) {
var error = new Error('입력값이 숫자가 아닙니다.')
next(error);
return;
}
res.send('Result : ' + val);
}
function errorHandler(err, req, res, next) {
res.send('Error 발생');
}n(3000);
'개발자 > 20181127 교육과정' 카테고리의 다른 글
controller 배열 자바스크립트에서 받기 (0) | 2019.01.18 |
---|---|
mongodb 시작 (0) | 2019.01.14 |
nodeJS express (0) | 2019.01.08 |
nodeJS get, post , 실습 (0) | 2019.01.07 |
nodeJS http (0) | 2019.01.07 |