라우팅: 동적 파라미터와 그룹화
수백 개의 페이지가 있는 웹사이트에서 모든 주소를 하나하나 등록하는 건 불가능합니다. 동적 파라미터({변수명})를 사용하면 하나의 라우트로 여러 주소를 똑똑하게 처리할 수 있습니다. 또한, 비슷한 라우트들은 그룹(Group)으로 묶어 코드를 깔끔하게 정리합니다.
🌳 라우트 트리 구조 (그룹화)
/api (Group)
├─ /users (전체 회원 목록)
└─ /users/{id} (특정 회원 정보)
├─ /api/users/1 ➡️ 1번 회원
└─ /api/users/99 ➡️ 99번 회원
├─ /users (전체 회원 목록)
└─ /users/{id} (특정 회원 정보)
├─ /api/users/1 ➡️ 1번 회원
└─ /api/users/99 ➡️ 99번 회원
{id} 자리에 들어온 숫자는 코드 내의 $args['id']를 통해 쉽게 꺼내 쓸 수 있습니다!
use Slim\Routing\RouteCollectorProxy;
// '/api' 로 시작하는 모든 주소를 한 곳으로 묶기 (그룹화)
$app->group('/api', function (RouteCollectorProxy $group) {
// 1. 전체 회원 목록 (GET /api/users)
$group->get('/users', function ($request, $response) {
$response->getBody()->write("전체 회원 목록입니다.");
return $response;
});
// 2. 특정 회원 정보 (GET /api/users/123)
// {id} 부분이 동적으로 바뀝니다.
$group->get('/users/{id}', function ($request, $response, $args) {
// 주소에 입력된 id 값을 꺼내옵니다.
$userId = $args['id'];
$response->getBody()->write("{$userId}번 회원의 정보입니다.");
return $response;
});
});