본문 바로가기
개발

[NodeJS] Get 라우팅

by 마스터누누 2017. 4. 18.
728x90
반응형

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(3000function(){
  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

댓글