[Node.js] Express 경로 매개 변수
동적인 라우팅을 통한 효율적인 웹 애플리케이션 개발
안녕하세요! 이번에는 Express에서의 경로 매개 변수에 대해 알아보겠습니다. 지금까지 만든 앱은 정적인 라우트를 다뤄왔지만, 동적인 요청에 대응하기 위해서는 경로에 변수를 넣어 매개 변수로 활용해야 합니다.
경로에 패턴 정의하기
지금까지의 코드에서는 정확한 경로에 매치되는 라우트를 다뤘습니다. 하지만 subreddit과 같은 동적인 값을 다뤄야 할 때 패턴을 정의해야 합니다. Reddit의 subreddit 경로를 예로 들어보겠습니다.
app.get('/r/:subreddit', (req, res) => {
const { subreddit } = req.params;
res.send(`Browsing the ${subreddit} subreddit!`);
});
이렇게 하면 /r/ 이후에 오는 어떤 문자열이든 subreddit으로 매칭되어 응답합니다.
![]() ![]() ![]() |
경로 매개 변수 추출하기
Express에서는 req.params를 통해 경로 매개 변수를 추출할 수 있습니다. 예를 들어, /r/cats를 요청하면 req.params에 { subreddit: 'cats' }와 같이 저장됩니다.
app.get('/r/:subreddit', (req, res) => {
const { subreddit } = req.params;
res.send(`Browsing the ${subreddit} subreddit!`);
});
다중 경로 매개 변수
Reddit의 댓글을 예로 들면, /r/soccer/comments/12345/title-of-the-post와 같은 패턴이 있습니다. 이런 경우를 다루려면 다중 경로 매개 변수를 사용해야 합니다.
app.get('/r/:subreddit/comments/:postId/:title', (req, res) => {
const { subreddit, postId, title } = req.params;
res.send(`Viewing Post ID: ${postId} on the ${subreddit} subreddit`);
});
이렇게 하면 /r/gardening/comments/289173/a-beautiful-garden와 같은 요청에 대해 subreddit, postId, title을 추출할 수 있습니다.
활용과 발전
이제 경로 매개 변수를 활용하여 동적인 라우팅을 구현할 수 있습니다. 나중에는 데이터베이스와 연결하여 subreddit에 따라 실제 글과 댓글을 표시하는 웹 페이지를 만들어볼 것입니다.
이제 Express의 강력한 기능 중 하나를 더 이해하셨습니다. 다음시간에는 쿼리 문자열에 대해서 알아보겠습니다.
계속해서 함께 공부해 나가요! 🚀