REST API
서로 다른 프로그램이 인터넷을 통해 데이터를 주고받을 수 있도록 정해진 규칙으로 소통하는 방식입니다.
🤔 혹시 이런 경험 있나요?
AI에게 "날씨 앱 만들어줘"라고 했더니 코드에 fetch('https://api.weather.com/...')이 보입니다. 또는 OpenAI를 사용하려면 "API 키를 발급받으세요"라는 안내가 나옵니다. API라는 단어는 바이브코딩을 하면 거의 매번 마주치는데, 도대체 이게 뭘까요?
🍽️ 레스토랑으로 이해하는 API
레스토랑에서 식사를 주문하는 상황을 생각해보세요.
- 손님(여러분의 앱): 까르보나라를 먹고 싶습니다.
- 웨이터(API): 손님의 주문을 받아 주방에 전달합니다.
- 주방(서버): 실제로 음식을 만들어서 웨이터에게 건네줍니다.
- 메뉴판(API 문서): 주문할 수 있는 것들과 방법이 적혀 있습니다.
손님은 주방에 직접 들어갈 수 없습니다. 대신 웨이터(API)에게 정해진 방식으로 요청하면, 원하는 결과를 받을 수 있습니다. API도 마찬가지입니다. 여러분의 프로그램이 다른 서비스에 직접 접근할 수 없지만, 정해진 규칙(API)을 통해 데이터를 요청하고 응답받을 수 있습니다.
📬 HTTP 메서드: 요청의 종류
API에 요청을 보낼 때는 "무엇을 하고 싶은지"를 함께 알려야 합니다. 이것을 HTTP 메서드라고 합니다.
| 메서드 | 의미 | 레스토랑 비유 |
|---|---|---|
| GET | 데이터를 가져옵니다 | "메뉴판 보여주세요" |
| POST | 새 데이터를 보냅니다 | "이 메뉴로 주문할게요" |
| PUT | 기존 데이터를 수정합니다 | "주문 변경할게요" |
| DELETE | 데이터를 삭제합니다 | "주문 취소해주세요" |
바이브코딩에서 AI가 생성한 코드를 보면 이런 구조를 자주 만나게 됩니다.
// GET: 사용자 목록 가져오기
fetch('https://api.example.com/users')
// POST: 새 게시글 작성하기
fetch('https://api.example.com/posts', {
method: 'POST',
body: JSON.stringify({ title: '제목', content: '내용' })
})📦 JSON: API가 사용하는 언어
API끼리 데이터를 주고받을 때는 대부분 JSON(JavaScript Object Notation) 형식을 사용합니다. 사람도 읽을 수 있고, 컴퓨터도 이해할 수 있는 텍스트 형태입니다.
{
"name": "홍길동",
"email": "hong@example.com",
"age": 28
}중괄호 {} 안에 "키": "값" 형태로 데이터가 들어 있습니다. AI에게 "유저 정보를 JSON으로 보내줘"라고 하면, 이런 형태의 데이터를 만들어줍니다.
🔑 API 키: 왜 항상 필요할까요?
바이브코딩을 하다 보면 OpenAI, Google Maps, Supabase 등 외부 서비스를 사용할 때마다 API 키를 요구받습니다. API 키는 레스토랑의 예약 번호와 같습니다.
- 누가 요청했는지 확인합니다 (인증)
- 얼마나 사용했는지 추적합니다 (사용량 관리)
- 남용을 방지합니다 (보안)
API 키 없이 요청하면 서버는 "당신이 누군지 모르겠으니 거부합니다"라고 응답합니다. 그래서 AI가 만들어준 코드에 OPENAI_API_KEY 같은 환경 변수가 항상 등장하는 것입니다.
⚠️ 바이브코딩할 때 흔한 API 실수
1. API 키를 코드에 직접 넣는 실수
// 절대 이렇게 하면 안 됩니다
const apiKey = 'sk-abc123...'
// 환경 변수를 사용하세요
const apiKey = process.env.OPENAI_API_KEYAPI 키를 코드에 그대로 적으면 GitHub에 올렸을 때 전 세계에 공개됩니다. 반드시 환경 변수(.env 파일)에 보관해야 합니다.
2. 에러 응답을 무시하는 실수
API는 항상 상태 코드를 함께 보내줍니다.
- 200: 성공입니다.
- 401: 인증 실패입니다. API 키가 잘못되었을 수 있습니다.
- 404: 요청한 데이터가 없습니다.
- 429: 요청을 너무 많이 보냈습니다 (속도 제한).
- 500: 서버 쪽 문제입니다.
AI가 만든 코드에서 에러가 나면, 먼저 이 상태 코드를 확인해보세요. 대부분의 문제 원인을 파악할 수 있습니다.
3. REST API의 URL 구조를 모르는 실수
REST API는 URL 자체가 데이터의 위치를 나타냅니다.
GET /users → 전체 사용자 목록
GET /users/123 → 123번 사용자 정보
POST /users → 새 사용자 생성
GET /users/123/posts → 123번 사용자의 게시글 목록URL만 봐도 "어떤 데이터에 접근하는지"를 알 수 있도록 설계하는 것이 REST API의 핵심 원칙입니다.
💼 실무에서 API를 실감하는 상황
광고 성과 대시보드가 멈췄을 때
여러 광고 플랫폼의 성과를 한 화면에 모아주는 대시보드는 각 플랫폼의 API로 데이터를 받아옵니다. 어느 날 특정 채널 데이터만 안 들어온다면, 대부분 API 키 만료나 권한 변경이 원인입니다. "API 연동이 끊겼다"라는 말이 무슨 뜻인지 알면, 담당자에게 "키를 재발급해서 다시 연결해달라"라고 정확히 요청할 수 있습니다.
AI 기능을 앱에 붙일 때
챗봇이나 자동 요약 기능을 만들려면 OpenAI 같은 서비스의 API 키를 발급받아 환경 변수에 넣는 과정을 거칩니다. 사용량에 따라 비용이 청구되고, 요청이 몰리면 429(속도 제한) 에러를 만나게 됩니다. 이 구조를 알면 "왜 키가 필요한지", "왜 갑자기 응답이 안 오는지"를 스스로 파악할 수 있습니다.
노코드 자동화 툴을 쓸 때
Zapier나 Make로 "폼 제출이 오면 슬랙에 알림 보내기" 같은 자동화를 만들 때도, 내부에서는 각 서비스의 API가 호출됩니다. 자동화가 실패하면 실행 로그에 401, 404 같은 상태 코드가 남는데, 이 숫자를 읽을 줄 알면 인증 문제인지 주소 문제인지 바로 구분할 수 있습니다. 요청을 보내는 쪽과 처리하는 쪽의 역할 구분은 프론트엔드와 백엔드 클래스에서 자세히 다룹니다.
📋 30초 요약
-
API는 프로그램 간의 약속된 소통 방식입니다. 레스토랑의 웨이터처럼, 정해진 규칙으로 요청하면 원하는 데이터를 받을 수 있습니다.
-
HTTP 메서드(GET/POST/PUT/DELETE)로 요청의 종류를 구분하고, 데이터는 JSON 형식으로 주고받습니다.
-
API 키는 코드가 아닌 환경 변수에 보관해야 합니다. 에러가 발생하면 상태 코드(200, 401, 404, 500 등)를 먼저 확인하는 습관을 들이세요.
이 글이 도움이 되셨다면 공유해 주세요
메신저로 바로 보내거나 링크를 복사할 수 있습니다.
바이브코딩으로 만든 앱에서 외부 서비스(예: OpenAI)에 데이터를 보내 새로운 결과를 생성하려고 합니다. 이때 사용하는 HTTP 메서드는 무엇일까요?
이어서 배우면 좋은 개념
프론트엔드와 백엔드 (Frontend & Backend)
프론트엔드는 사용자가 보고 상호작용하는 화면(브라우저) 부분이고, 백엔드는 데이터 처리와 비즈니스 로직을 담당하는 서버 부분입니다. 이 구분을 이해해야 바이브코딩에서 보안 사고를 방지할 수 있습니다.
환경 변수와 .env (Environment Variables)
프로그램이 실행될 때 참조하는 설정값으로, API 키나 비밀번호 같은 민감한 정보를 코드와 분리하여 안전하게 관리하는 방법입니다.
JSON과 데이터 구조 (JSON & Data Structures)
JSON은 데이터를 주고받을 때 가장 널리 쓰이는 텍스트 형식이고, 데이터 구조는 정보를 담는 그릇의 모양입니다. AI에게 원하는 결과물의 형태를 알려줄 때 핵심이 되는 개념입니다.
데이터베이스 (Database)
데이터를 체계적으로 저장하고, 필요할 때 빠르게 찾아 쓸 수 있도록 정리해주는 디지털 저장소입니다.
관련 인사이트
- 독자 AI 파운데이션 모델(독파모) 2차 평가 결과, 근황 및 통과 3팀 정리독자 AI 파운데이션 모델 프로젝트는 한국 정부가 국가대표 AI 모델을 개발할 팀을 단계 평가로 추려 GPU와 데이터를 집중 지원하는 사업입니다. 2026년 8월 18일 2차 단계평가에서 업스테이지, SK텔레콤, LG AI연구원이 통과하고 모티프테크놀로지스가 탈락했습니다.
- Qwen3.8 27B 로컬 실행 결과: 24GB 맥에서는 CPU로 떨어집니다Qwen3.8 27B는 알리바바 Qwen 팀이 2026년 8월 공개한 Apache 2.0 오픈 웨이트 모델입니다. 메모리 24GB 맥미니 M4 프로에 직접 설치해 돌려 보니 GPU에 올라가지 못하고 CPU로 실행됐고, 그때 측정한 속도를 그대로 정리했습니다.
- 코덱스 CLI와 클로드 코드 비교 (같은 도구를 만들게 해 봤습니다)코덱스 CLI와 클로드 코드는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 두 도구에 똑같은 규격서를 주고 같은 도구를 만들게 해서 걸린 시간, 결과물 규모, 안전장치가 어떻게 다른지 측정했습니다.
- 코덱스 CLI 사용법: 초보 블로거를 위한 GEO 인용 검사 도구 만들기 과정코덱스 CLI는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 빈 폴더에서 시작해 내 글이 AI 답변에 인용되기 쉬운지 확인하는 GEO 점검 도구가 나올 때까지, 시킬 말 전문과 명령을 그대로 정리했습니다.
- 구글 픽셀 11, Qwen3.8, 커서 인수로 본 AI 배포 경쟁AI 배포 경쟁은 같은 모델을 몇 개의 화면에 넣어 두느냐로 우열이 정해지는 경쟁입니다. 2026년 8월 12일부터 15일 사이에 나온 발표 다섯 건을 놓고, 각 회사가 모델을 어디까지 밀어 넣었는지 공식 자료 기준으로 정리했습니다.
- 제미나이 3.7 플래시와 GPT-5.6 울트라패스트, AI 속도 발표 4건 정리AI 추론 속도는 모델이 답을 만들어 내는 속도입니다. 2026년 8월 둘째 주에 나온 네 건의 발표를 놓고 각각이 속도를 어디서 얻는지, 발표된 배수가 실제 작업 시간에서 어떻게 줄어드는지를 공식 자료 기준으로 정리했습니다.
