네이버 사전에 분류하다라고 써져있다.
-끝-
분류하다라는 뜻에 걸맞게 url을 기준으로 어떤 행위를 할지 분류해주는 것이 router이다.
위의 url에서 dunchi.tistory.com은 BASE URL일 것이고 뒤에 /category/프로그래밍/Node.js는
분류를 위해 지정해준 URL일 것이다!
그렇다면 express에서 서버로온 request를 url로 확인하고 원하는 기능을 실행할 수 있는 router를 구현해보자
BASE URL이 dunchi.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코드를 지정할 수 있다!
- 끝 -
'프로그래밍 > Node.js' 카테고리의 다른 글
[express] pg-promise (0) | 2020.07.26 |
---|---|
[express] postgreSQL 연동 (0) | 2020.07.23 |
Node 및 Express 설치 (0) | 2020.07.12 |
댓글