[
  {
    "courseSlug": "api",
    "question": "코스의 식당 비유에서 '메뉴판'에 해당하는 것은 무엇인가요?",
    "option1": "요청(Request) — 손님이 적어 내는 주문서",
    "option2": "API 문서 — 뭘 시킬 수 있는지 적힌 목록",
    "option3": "백엔드와 DB — 요리를 만드는 주방",
    "option4": "응답(Response) — 주방에서 나온 음식",
    "answerIndex": 1,
    "explanation": "섹션 1의 비유에서 메뉴판은 API 문서에 해당해요. 손님(프론트엔드)은 메뉴판에 있는 것만 주문할 수 있고, 그래서 정해진 요청에 정해진 응답이 오는 예측 가능한 약속이 됩니다."
  },
  {
    "courseSlug": "api",
    "question": "REST 규칙에서 '무엇을(자원)'과 '어떻게(행위)'는 각각 어디에 담나요?",
    "option1": "자원은 HTTP 메서드에, 행위는 URL에 담는다",
    "option2": "자원과 행위를 모두 요청 본문(body)에 담는다",
    "option3": "자원은 URL에, 행위는 HTTP 메서드에 담는다",
    "option4": "자원은 헤더에, 행위는 상태코드에 담는다",
    "answerIndex": 2,
    "explanation": "섹션 2의 핵심 두 줄 요약이에요. 자원은 명사로 URL에(/api/checklists/3), 행위는 GET·POST·PUT·DELETE 같은 메서드에 담아서, URL과 메서드만 봐도 무슨 일이 일어날지 읽히게 합니다."
  },
  {
    "courseSlug": "api",
    "question": "수습 사원이 로그인한 상태에서 관리자 전용 API를 호출했을 때, 서버가 돌려주는 상태코드는 무엇인가요?",
    "option1": "400 — 요청 본문의 문법이 잘못되었다는 뜻",
    "option2": "401 — 토큰이 없거나 만료되었다는 뜻",
    "option3": "404 — 요청한 자원이 존재하지 않는다는 뜻",
    "option4": "403 — 누군지는 알지만 권한이 없다는 뜻",
    "answerIndex": 3,
    "explanation": "섹션 6에서 401은 인증 실패(너 누구야?), 403은 인가 실패(누군진 아는데 자격이 없어)로 구분했어요. 로그인은 했지만 권한이 없는 경우이므로 403 Forbidden입니다."
  },
  {
    "courseSlug": "api",
    "question": "다음 중 코스에서 배운 JSON 문법 규칙으로 올바른 것은 무엇인가요?",
    "option1": "이름표(key)는 항상 큰따옴표로 감싸야 한다",
    "option2": "문자열에는 작은따옴표를 쓰는 것도 허용된다",
    "option3": "마지막 항목 뒤에 쉼표를 붙여도 문제없다",
    "option4": "// 를 사용해 주석을 자유롭게 달 수 있다",
    "answerIndex": 0,
    "explanation": "섹션 3의 규칙 4가지 중 하나로, key는 항상 큰따옴표로 감싸요. 반대로 작은따옴표, 마지막 항목 뒤 쉼표, 주석(//)은 모두 코스에서 '함정 주의'로 짚은 JSON 에러 원인입니다."
  },
  {
    "courseSlug": "api",
    "question": "동료가 체크리스트 삭제 기능을 'GET /api/deleteChecklist?id=3' 으로 만들었습니다. 코스 내용에 비추어 이 설계의 가장 큰 문제는 무엇인가요?",
    "option1": "GET은 응답 본문을 받을 수 없어서 삭제 결과를 확인할 방법이 없다",
    "option2": "GET을 안전하다고 믿는 크롤러가 링크를 따라가며 데이터를 지울 수 있고, 동사는 URL이 아니라 메서드에 담아야 한다",
    "option3": "URL에 물음표(?)와 숫자를 함께 쓰면 REST에서 요청 자체가 거부된다",
    "option4": "삭제는 반드시 POST로만 보내야 하며 DELETE 메서드는 조회 전용이다",
    "answerIndex": 1,
    "explanation": "섹션 2에서 배운 두 가지가 모두 어긋난 설계예요. 브라우저·검색엔진은 GET을 안전한 읽기로 믿고 미리 불러가기도 해서 크롤러가 데이터를 전부 지운 사고가 실제로 있었고, 자원은 명사(URL)·행위는 메서드로 표현해 DELETE /api/checklists/3 처럼 써야 합니다."
  }
]
