WEB-FE-03 · HTTP·API로 백엔드 연결하기
API는 두 프로그램이 서로 호출할 수 있도록 정한 입력·출력 계약입니다. 웹 API는 주로 HTTP를 사용하지만 API와 HTTP가 같은 뜻은 아닙니다. 프론트엔드는 계약에 맞는 주소·메서드·데이터를 보내고 백엔드는 상태 코드와 응답 데이터를 돌려줍니다.
대시보드의 연도 필터처럼 이미 index.html에 들어 있는 자료만 바꾸는 동작에는 서버 요청이 필요하지 않습니다. 반면 검토 메모 저장은 브라우저 밖에 기록을 남겨야 하므로 API 요청이 필요합니다. 이 차이를 먼저 구분하면 구조를 과하게 만들지 않을 수 있습니다.
요청과 응답
요청
POST /api/memos
Content-Type: application/json
{"content":"검토 메모"}
응답
201 Created
{"id":42,"content":"검토 메모"}URL은 요청할 자원의 위치, 메서드는 할 일, 헤더는 데이터 형식이나 인증 같은 부가 정보, 본문은 전달할 데이터를 나타냅니다. JSON은 요청과 응답에 자주 쓰이는 데이터 형식일 뿐이며 모든 HTTP 요청이 JSON을 사용하는 것은 아닙니다.
HTTPS는 HTTP 내용을 암호화된 연결로 전달합니다. 주소가 HTTPS라고 해서 애플리케이션의 권한·입력 검증과 데이터 보호가 자동으로 해결되는 것은 아닙니다.
자주 쓰는 HTTP 메서드
| 메서드 | 일반적인 목적 | 예시 |
|---|---|---|
GET | 조회 | 검토 대상 목록 읽기 |
POST | 새 작업 또는 자원 생성 | 검토 실행·메모 저장 |
PUT | 자원 전체 교체 | 설정 전체 갱신 |
PATCH | 자원 일부 변경 | 검토 상태만 변경 |
DELETE | 삭제 | 임시 메모 제거 |
실제 API 계약이 다르게 정의될 수 있으므로 이름만 보고 추측하지 않고 백엔드 경로와 문서를 확인합니다. 특히 조회 요청은 서버 상태를 바꾸지 않도록 하고, 같은 요청을 재시도했을 때 중복 영향이 생기는지도 확인합니다.
상태 코드 읽기
| 범위 | 의미 | 먼저 확인할 곳 |
|---|---|---|
2xx | 요청 처리 성공 | 응답 데이터와 기대값 |
3xx | 다른 위치나 캐시로 연결 | 이동 주소와 브라우저 동작 |
4xx | 서버가 현재 요청을 처리할 수 없음 | 주소·입력·인증·권한·현재 상태 |
5xx | 서버가 요청 처리 중 실패 | 백엔드 로그와 의존 서비스 상태 |
4xx가 항상 사용자 컴퓨터나 프론트엔드 고장이라는 뜻은 아닙니다. 예를 들어 401은 인증 필요, 403은 권한 거부, 404는 자원을 찾지 못함, 422는 처리할 수 없는 입력을 나타낼 수 있습니다. 5xx도 외부 서비스 장애라면 현재 코드에서 직접 고칠 수 없으므로 응답 출처와 로그를 확인합니다.
프론트엔드에서 응답 확인하기
const response = await fetch("/api/memos")
if (!response.ok) {
throw new Error(`요청 실패: ${response.status}`)
}
const memos = await response.json()fetch()는 서버가 404나 500을 반환해도 응답 자체를 받았기 때문에 자동으로 실패 예외가 되지 않습니다. response.ok나 상태 코드를 확인한 뒤 성공 데이터와 오류를 구분합니다.
API 연결 확인
- 프론트엔드가 호출한 URL과 메서드가 백엔드 경로와 같은가
- 요청 헤더와 JSON 필드 이름·자료형이 계약과 같은가
- 상태 코드와 응답 본문을 모두 확인했는가
- 화면의 건수와 직접 호출한 API 응답이 같은가
- 오류 응답을 빈 성공 데이터로 바꾸지 않았는가
2-06 · Agent 검토 자료 API 연결하기에서는 파일 없음·잘못된 JSON·계약 불일치를 정상 응답과 구분합니다.
공식 근거
- MDN · HTTP 요청 메서드 — 메서드별 의미와 속성
- MDN · HTTP 응답 상태 코드 — 상태 코드 범위와 개별 의미
- MDN · Fetch API 사용하기 — JavaScript 요청과 응답·오류 처리