본문 바로가기
프로그래밍/Node.js

[express] router

by 일상 속 둔치 2020. 7. 19.

네이버 사전에 분류하다라고 써져있다.

 

-끝-

 

분류하다라는 뜻에 걸맞게 url을 기준으로 어떤 행위를 할지 분류해주는 것이 router이다.

 

위의 url에서 dunchi.tistory.comBASE URL일 것이고 뒤에 /category/프로그래밍/Node.js

 

분류를 위해 지정해준 URL일 것이다!

 

그렇다면 express에서 서버로온 request를 url로 확인하고 원하는 기능을 실행할 수 있는 router를 구현해보자

 

BASE URLdunchi.tistory.com이라고 가정하겠다!

 

* 설정

 

router를 구현할 js파일을 만들어주자. 필자는 rotues 폴더 안에 api/category, api/item 등의 라우팅 파일들을 생성해주었다. 이후 app.js로 가보자

var itemCreateRouter = require('./routes/api/item');
var categoryRouter = require('./routes/api/category');
var userRouter = require('./routes/api/user');

app.use('/item',itemCreateRouter);
app.use('/category',categoryRouter);
app.use('/user',userRouter);

app.js에서 router파일과 url을 연동해주자.

 

app.use는 첫번째 인자인 url과 매칭이되면 해당 Router 파일에서 맞는 url을 찾으러 간다.

 

예를 들어, dunchi.tistory.com/item인 request가 오면 itemCreateRouter(폴더에서 routes/api/item.js)로 들어가게된다.

 

이제 router 파일과 경로 지정까지 해주었다.

 

그럼 router 코드를 짜러 가보자

 

* 코드

var express = require('express');
var router = express.Router();

express에서는 router를 제공한다. 위처럼 라우터를 선언해주자!

 

router.get('/', function(req, res, next) {
  res.send('item');
  client.connect(err => {
    if (err) {
      console.error('connection error', err.stack)
    } else {
      console.log('connected')
    }
  })
});

router.get('/create', function(req, res, next) {
  const query = new Query("INSERT INTO item VALUES(6,'테스트','testID','testPW','url','etc',1)");
  const result = client.query(query)
  res.status(200).end();
});

위에서 선언한 router를 이용해 어떤 url를 받을 것이고, 어떤 행위를 할 것인지 구현하자!

 

router에는 GET, POST 등의 HTTP 메소드가 정의되어 있다. 원하는 HTTP 메소드와 첫번째 인자로 url를 정하자!

 

위의 '/'dunchi.tistory.com/item/로 접속한 request에 대해 처리할 것이고

 

아래 '/create'dunchi.tistory.com/item/create에 대한 request를 처리하게 될것이다!

 

* 응답

서버로 들어온 request에 대해서 response를 전송해보자

 

response에 대한 객체는 router에 2번째로 선언한 함수에 res객체로 접근할 수 있다.

 

메소드는 다음과 같다.

메소드 설명
res.download() 파일이 다운로드되도록 프롬프트합니다.
res.end() 응답 프로세스를 종료합니다.
res.json() JSON 응답을 전송합니다.
res.jsonp() JSONP 지원을 통해 JSON 응답을 전송합니다.
res.redirect() 요청의 경로를 재지정합니다.
res.render() 보기 템플릿을 렌더링합니다.
res.send() 다양한 유형의 응답을 전송합니다.
res.sendFile 파일을 옥텟 스트림의 형태로 전송합니다.
res.sendStatus() 응답 상태 코드를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송합니다.

주로 .json()을 통해 전달하고자 하는 데이터를 body에 json으로 담아 보내기도하고 .send()를 사용해 보내기도 한다.

 

또한 res.status()로 결과 처리에 대한 status코드를 지정할 수 있다!

 

- 끝 -

 

 

참고 : https://expressjs.com/ko/guide/routing.html

'프로그래밍 > Node.js' 카테고리의 다른 글

[express] pg-promise  (0) 2020.07.26
[express] postgreSQL 연동  (0) 2020.07.23
Node 및 Express 설치  (0) 2020.07.12

댓글