[Express] 라우팅 메소드 app.route, app.get, app.post 이해와 활용
- app.get
- app.post
- app.route

app.get()
HTTP GET 요청을 보내면 처리하는 라우팅 메소드이다. 첫 번째 인자로 경로를, 두 번째 인자로 콜백 함수를 받는다.
여기서 두 번째 인자인 콜백 함수는 미들웨어(middleware) 라고도 한다.
예시에 있는 next() 함수에 인자를 전달하면 에러 처리 미들웨어로 제어가 이동하여 에러 처리 로직을 수행할 수 있다.
여기서 말하는 에러 처리 미들웨어란, 라우팅 메소드 작성이 끝나는 부분에 app.use를 활용하여 에러 처리 하는 코드를 말 한다.
더보기: CRUD에 대해 이해하기
// CRUD: 생성(Create), 읽기(Read), 업데이트(Update), 삭제(Delete)의 약자
1. 생성(Create): 새로운 데이터를 생성하거나 데이터베이스에 추가하는 작업을 말한다. HTTP 메소드 - POST
2. 읽기(Read): 데이터베이스에서 데이터를 조회하거나 읽는 작업을 말한다. HTTP 메소드 - GET
3. 수정(Update): 이미 데이터베이스에 있는 데이터를 수정하는 작업을 말한다. HTTP 메소드 - PUT
4. 삭제(Delete): 데이터베이스에서 특정 데이터를 삭제하는 작업을 말한다. HTTP 메소드 - DELETE
---추가---
수정(Update)은 PUT 말고도 PATCH가 있는데 다음은 둘의 비교이다.
PUT: 리소스 전체를 업데이트하는 데 사용된다. 특정 부분만 업데이트되는 것이 아닌 나머지 정보는 모두 없어지거나 기본값으로 대체될 수 있다.
PATCH: 리소스 일부를 업데이트하는 데 사용된다. 클라이언트는 변경하려는 필드만 제공하면 된다. 나머지 정보는 그대로 유지된다.
const express = require('express');
const router = express.Router();
// 가상의 데이터
const tweets = [{id: "east0321", text: "sayHello"}];
// ':'를 활용한 동적 경로(dynamic path)
router.get('/:id', (req, res, next) => {
try {
const id = req.params.id;
const data = tweets.filter((i) => i.id === id);
if (data.length === 0) {
const error = new error;
error.statusCode = 404;
throw error;
} else {
res.json(data); // json을 사용하면 자동으로 JSON문자열로 변환하여 응답하며,
} // Content-Type도 자동으로 설정해준다.
}
catch {
res.send('트윗이 존재하지 않습니다.');
}
});

app.post()
HTTP에서 POST 요청을 보내오면 처리하는 메소드이다. 주로 클라이언트로부터 데이터를 받아 서버에 저장하는 데 사용된다.
const tweets = [];
router.post('/', (req, res, next) => {
const data = req.body; // 클라이언body에 담겨온 데이터를 변수 data에 담는다
tweets.push(data); // data를 tweets 배열에 추가
res.status(201).json(tweets); // 상태코드 201을 설정하고, json으로 직렬화 하여 응답을 보냄
console.log('추가완료~!'); // 성공적으로 완료되면 콘솔에 '추가완료~!'를 표시
})

app.route()
특정 경로에 대한 체인이 가능한 라우트 핸들러를 만든다. 같은 경로에 대해 여러 HTTP 메소드를 처리할 때 유용하다.
route('경로') 작성 후 아래 .get .post 등으로 체이닝을 한다.
app.route('/users')
.get((req, res) => {
res.send('GET request to the /users page'); // GET에 대한 미들웨어
}) // ⛔️주의 포인트⛔️: 세미클론 사용❌
.post((req, res) => {
const body = req.body;
tweets.push(body);
res.status(201).json(tweets); // POST에 대한 미들웨어
console.log('추가완료~!');
})
});
'NodeJS' 카테고리의 다른 글
[JS] Promise 객체 이해 및 체이닝에 대해 이해하기 (0) | 2023.05.14 |
---|---|
[Node] mySQL과 Sequelize를 이용한 데이터베이스 설정 (0) | 2023.05.14 |
[Express] express.json 메소드 이해하기 (0) | 2023.05.13 |
[Express] 라우팅 메소드 put과 delete 이해와 예시 (0) | 2023.05.13 |
[Node.js] readFile과 createReadStream 비교 및 활용방법 (0) | 2023.05.13 |