spa fallback
직접 접근은 서버 fallback 뒤 라우터가 복원한다
앱 내부 이동은 History API가 처리하지만 새로고침과 깊은 URL 직접
접근은 서버가 같은 HTML을 돌려줘야 한다.
| 경계 | 서버 책임 | 클라이언트 책임 | 실패 신호 |
|---|---|---|---|
| Deep URL직접 접근 | 정적 파일이 아닌 앱 경로 요청을 앱 진입점으로 보낸다. | 현재 pathname을 읽어 첫 화면 후보를 고른다. | 새로고침에서 서버 404 페이지가 보인다. |
| GET request문서 요청 | HTML 상태 코드를 성공으로 반환하고 JS asset 경로를 유지한다. | 받은 HTML에서 앱 번들을 로드한다. | HTML은 왔지만 asset이 잘못된 base path로 404가 난다. |
| Fallback HTML진입점 | 모든 앱 경로에 같은 index 문서를 돌려준다. | 부팅 후 브라우저 주소를 기준으로 라우터를 실행한다. | 서버는 HTML을 줬지만 라우터가 빈 화면을 만든다. |
| Route match화면 선택 | 라우트 내부 구조를 해석하지 않고 정적 응답만 맡는다. | pathname과 라우트 테이블을 비교해 컴포넌트를 고른다. | 경로 매칭 실패 로그가 나거나 기본 화면만 나온다. |
| Data load내용 복원 | API와 정적 문서 요청을 fallback과 구분한다. | 선택된 화면에 필요한 데이터만 다시 가져온다. | 문서 fallback이 API 요청까지 가로채 JSON 대신 HTML을 준다. |