Get 라우팅
Node가 미들웨어로써의 역할을 하기 위해서 라우팅이 필요하다
라우팅은 URL이나 특정한 HTTP 요청 메소드(GET/POST)인 특정 엔드포인트에 대한
클라이언트의 요청에 애플리케이션이 응답하는것을 결정하는걸 말한다
예를 들어 사용자가 localhost:3000으로 접근한 후 /main에 대한 요청을 보냈을 때
어떤 동작을 할 것 인가에 대한 명령이 필요하다.
(locallhost:3000/main)
예를 들어 main에 접근했을때 main.html 이라는 파일과 연결시킬수도 있고
hello.html이라는 파일과 연결시킬수도 있다.
각 라우트는 하나 이상의 핸들러 함수를 가질수 있고,
이 함수는 라우트 함수가 일치할때 실행된다.
라우트의 정의, 기본 몸체는 다음과 같다.
1 | app.METHOD(PATH, HANDLER) | cs |
app은 express의 인스턴스이다
METHOD는 HTTP 요청 메소드이다(get,post 등)
PATH는 서버에서의 경로이다
HANDLER는 라우트가 일치 할때 실행되는 함수이다.
라우팅 예제
1 2 3 4 5 6 7 8 9 10 | var express = require('express'); var app = express(); app.listen(3000, function(){ console.log("Start server on port 3000"); }) app.get('/', function(req,res){ res.send('<h1> hello world </h1>'); }); | cs |
get으로 요청된 '/' PATH에 대한 라우팅이다.
해당 경로로 접근하게 되면 '<h1> hello world </h1>'의 html 값을 응답으로 전송한다.
실제 해당 경로로 접근했을때 응답이
app.js에서 보낸 html 응답값이 출력됨을 확인할 수 있다.
다음은 html 파일을 응답해보도록 하자
먼저 폴더내에 public이라는 폴더를 생성후에 main.html 파일을 생성해준다
main.html안의 내용은 임으로 지정해준다.
1 2 3 4 | app.get('/', function(req,res){ res.sendFile(__dirname+'/public/main.html'); }); | cs |
이후 app.js의 라우터를 다음과 같이 변경한다.
여기서 sendFile은 응답을 파일로 할때 사용하며 파일의 경로를 인자로 받는다.
__dirname은 현재 서버 폴더까지의 경로를 나타낸다.
해당 경로로 접근 시 public 폴더에 만들어 두었던 html 파일이 올바르게 응답 된다.
라우트 체인
1 2 3 4 5 6 7 8 9 10 | 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'); }); | cs |
app.route를 이용하면 라우트 경로에 대해 체인 가능한 라우트 핸들러를 작성할 수 있다
경로를 한곳에 지정되어 있으므로 모듈식 라우터를 작성하면 중복성과 오타가 감소한다
'개발' 카테고리의 다른 글
[NodeJS] GET 요청 받기/응답 (0) | 2017.04.18 |
---|---|
[NodeJS] 정적 파일 위치 등록 (0) | 2017.04.18 |
[NodeJS] 기본 서버 연결 (0) | 2017.04.18 |
[NodeJS] 초기 설정(mac) (0) | 2017.04.18 |
[ReactJS] 작업 환경 구축 - create react app (0) | 2017.04.18 |
댓글