일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 자바
- C++
- socket.io
- benchmark
- 특징
- 노드
- 개발자
- ngrinder
- nodejs
- node.js
- 파헤쳐보자
- 소켓
- Python
- express
- Stream
- 스크럼
- java
- RDF
- Knowledge Graph
- scrum
- node
- 예제
- 이벤트 루프
- Django
- 지식 그래프
- 노드js
- 스레드
- Router
- Groovy
- 스크럼 마스터
- Today
- Total
라봉이의 개발 블로그
node.js express 2. router 객체, res.render 렌더링 본문
저번 포스트에서는 express란 무엇인지, 그리고 express-generator로 스켈레톤을 생성해보고
생성한 프로젝트를 곧바로 돌려보는 것까지 했었다.
그렇다면 이제 어떻게 돌아가는 지 코드를 보며 살펴볼 차례이다.
router 객체
저번 포스에서 프로젝트를 구동하고 http://localhost:3000/ 을 웹브라우저에 입력하게되면 다음과 같은 화면을 볼 수 있었다.
그리고 이 화면은 views/index.ejs 파일이 렌더링 된 것이라고 했고, 렌더링하는
로직은 routes/index.js에 있었다고 했었다.
일단 routes/index.js를 보자
// index.js file
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
module.exports = router;
express 모듈을 require하여 파일에 추가했고 express에서 Router 객체를
따로 뽑아서 router 변수가 참조했다.
Node.js의 모듈 시스템에서 각 파일은 분리된 모듈로 간주하기 때문에
파일에서 필요한 모듈을 따로 추가해야한다.
그리고 router 객체에서 핸들러를 추가하였다.
이 router 객체는 매우 중요한 역할을 한다.
routing에 대한 설명은 express docs에서 볼 수 있다.
Routing refers to how an application’s endpoints (URIs) respond to client requests.
출처: http://expressjs.com/en/guide/routing.html
구글 번역기에 돌려 직역하자면
라우팅은 응용 프로그램의 끝점 (URI)이 클라이언트 요청에 응답하는 방법을 나타냅니다.
쉽게 말하자면 각 URI와 HTTP Method가 다른 클라이언트 요청을 다르게 동작할 수 있도록 만든 것이다.
http://domain.com/a 에 대해서는 A 함수가,
http://domain.com/b 에 대해서는 B 함수가 동작하게 하여
router.get('/a', function(req, res) {
res.render('index', { title: 'A' });
});
router.get('/b', function(req, res) {
res.render('index', { title: 'B' });
});
위와 같이 쉽게 서비스 로직을 구성할 수 있다.
또한 http://domain.com/a 의 GET 요청과,
http://domain.com/a 의 POST 요청을 달리받기 때문에
router.get('/a', function(req, res) {
res.render('index', { title: 'A' });
});
router.post('/a', function(req, res) {
res.render('index', { title: 'B' });
});
위처럼 구성할 수도 있다.
express는 이런식으로 URI나 HTTP Method로 각 엔드포인트에 대한 핸들러를
매우 쉽게 등록할 수 있다.
render
이제 index.ejs를 렌더링하는 router.get('/')에 대해 살펴보자.
URI path가 '/'이고 HTTP Method가 GET인 요청에 대해
function(req, res){
res.render('index', { title: 'Express' });
});
가 동작한다.
일단 함수의 매개변수에 대해 알아보자.
- req 객체는 클라이언트의 request에 대한 정보가 담겨 있다.
- res 객체는 서버가 클라이언트에게 response할 정보가 담겨있다.
'Node.js > express' 카테고리의 다른 글
express-session- cookie 외에 다른 방법으로 인증하는 법 (0) | 2018.08.31 |
---|---|
node.js express 5. middleware란? 미들웨어 정의, 미들웨어 유형 (4) | 2018.03.26 |
node.js express 4. route paths 라우트 경로, route parameters 라우트 파라미터, response methods 응답 메서드 (0) | 2018.03.14 |
node.js express 3. static file 정적 파일 옵션, path 모듈 (4) | 2018.03.04 |
node.js express 1. express란??, express generator, directory 구조 (3) | 2018.02.27 |