라우트 매개변수
Coddy Node.js 여정의 Express 기초 섹션에 포함된 레슨. 23개 중 4번째.
레시피 상자에는 많은 레시피가 들어갈 것이므로, 레시피마다 경로를 하나씩 만들면 끝이 없습니다.
app.get('/weather/:city', (req, res) => {
res.send('Forecast for ' + req.params.city);
});콜론으로 시작하는 경로 부분은 경로 매개변수입니다. 어떤 값이든 일치하며, Express는 그 값을 req.params에 넣습니다. GET /weather/oslo는 Forecast for oslo를 보냅니다.
매개변수는 항상 문자열입니다. GET /rooms/12는 '12'를 반환하며, '12' === 12는 false이므로 숫자와 비교하기 전에 Number(...)로 변환하세요.
요청한 항목이 존재하지 않으면 상태 코드 404로 응답하세요. res.status(404).send('No such city')는 상태를 설정한 다음 응답을 보냅니다.
챌린지
쉬움각 레시피는 고유한 페이지를 가지며, 경로에 해당 레시피의 id가 포함됩니다. /recipes/1, /recipes/2 등이 있습니다.
server.js에서/recipes/:id경로를 하나 추가하세요. 경로에 있는 id와 일치하는id를 가진 레시피를recipes(data.js에 있음)에서 찾습니다. 해당 레시피의 제목만 텍스트로 전송합니다./recipes/2는Pancakes를 전송합니다.- 경로에 있는 id는 문자열이고
data.js의 id는 숫자이므로, 비교하기 전에 변환하세요. - 해당 id를 가진 레시피가 없으면 상태를 404로 설정하고 텍스트
No such recipe를 전송하세요.
해보기: ‘플레이’를 누르고 /recipes/2를 전송하세요. 상태 200과 함께 Pancakes가 표시되어야 합니다. /recipes/4를 전송하세요: Fish & Chips. /recipes/99를 전송하세요: 상태 404와 함께 No such recipe가 표시됩니다.
직접 해보기
import express from 'express';
import { recipes } from './data.js';
const app = express();
app.get('/', (req, res) => {
res.send('Welcome to Recipe Box');
});
// type('text')는 일반 텍스트를 전송하므로 각 제목이 한 줄씩 표시됩니다.
app.get('/recipes', (req, res) => {
res.type('text').send(recipes.map((recipe) => recipe.title).join('\n'));
});
app.get('/about', (req, res) => {
res.send('Recipe Box collects family recipes.');
});
app.listen(3000, () => {
console.log('Recipe Box is running on port 3000');
});
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Express 기초의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드