현재 App Router 예시는 params를 await하고 slug 부재를 먼저 분기한다

catch-all 구현의 품질은 폴더 이름보다 params 처리, notFound 분기, 정적 경로 목록에서 갈린다.

구현 지점필수 패턴선택 패턴점검 포인트
props 타입params: Promise<{ slug: string[] }>params: Promise<{ slug?: string[] }>현재 App Router 문법
값 꺼내기const { slug } = await paramsconst { slug } = await params서버 컴포넌트에서 await
빈 경로라우트 매칭 안 됨slug가 undefined 가능홈 화면 또는 빈 상태
조회 키slug.join('/')(slug ?? []).join('/')허용 문자와 깊이 검증
없는 문서notFound()홈이면 목록, 상세면 notFound()404와 빈 화면 구분