Devin.KR

HTTP와 비동기 API 연결

정적 데이터를 제공된 행사 API로 교체하고 실패를 처리합니다.

진도 0%

레슨

  1. 요청과 응답 계약

    개발자 도구에서 요청·상태·JSON 계약을 확인합니다.

  2. Promise와 오류 전파

    비동기 완료와 실패의 실행 순서를 설명합니다.

  3. 로딩·오류·빈 상태

    HTTP 오류와 연결 실패를 화면 상태로 바꿉니다.

  4. 재시도와 자원 정리

    재시도와 화면 이탈에서 남은 작업을 정리합니다.

5단계: HTTP와 비동기 API 연결

m04 미션 solution의 문서·CSS·데이터·DOM을 이어받은 starter에서 API 경계를 완성합니다. legacy-results.js는 앞 단계 회귀 비교용이며 실제 화면은 새 results.js와 api.js를 사용합니다.

요구사항

  • assets/api.js에서 HTTP 상태 검사·empty 발행·dispose 정리를 완성합니다. 실제 API 호출은 제공 로컬 모의 서버만 사용합니다.
  • 이전 검색·지역 필터·상세·조건 초기화·뒤로/앞으로·포커스 복귀를 유지합니다. 카드 제목은 textContent로 넣습니다.
  • loading·success·empty·not-found·HTTP 오류·연결 실패·계약 오류를 구분하고 실패 후 동일 조건 재시도를 제공합니다.
  • 진행 중 중복 실행을 막고 화면 이탈에서 요청·이벤트를 정리합니다. AbortError와 늦은 완료는 종료 화면에 안내를 쓰지 않습니다.
  • npm ci 후 npm test를 실행합니다. 서버가 가능한 환경에서 npm start로 브라우저 Network와 CORS를 관찰하고 LAYOUT.md에 근거와 미확인 항목을 기록합니다.

완료 기준

  • npm test에서 이전 문서 18건·CSS 20건·데이터 15건·동기 DOM 20건과 새 API/비동기 DOM 17건이 전부 통과합니다. starter는 이전 검사와 API 일부 검사 통과·세 TODO 관련 assertion 실패입니다.
  • API 모델이 200 배열·200 빈 배열·404·500·연결 실패·손상 JSON·잘못된 필드를 구분합니다.
  • API 모델에서 loading이 완료 전에 발행되고 실패 후 같은 URL로 재시도하여 success로 회복합니다.
  • DOM 모델에서 안전 제목·상세 404·상세와 목록 복귀·포커스·리스너 제거를 검사합니다. API session 모델에서 중복 차단·취소 signal·이탈 후 늦은 쓰기 방지를 검사합니다.
  • 실제 HTTP 서버·CORS·키보드·320px·200% 확대·뒤로 가기 캐시 복원은 브라우저 관찰을 별도로 제출합니다. 작성 샌드박스의 서버 바인딩은 EPERM으로 미확인입니다.
npm test
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 정상 빈 결과와 응답을 알 수 없는 실패를 구분해 다음 행동을 설명합니다.
  • Promise 반환·상태 발행·취소 신호·리스너 해제의 서로 다른 책임을 테스트 근거로 설명합니다.
  • Node·DOM 모델 통과와 실제 HTTP/CORS/브라우저 관찰의 증거 범위를 구분합니다.