본문 바로가기

API와 JSON이 뭔가요? 바이브코딩 초보자를 위한 기초 정리

AI로 코딩을 하다 보면 어느 순간 API라는 단어가 계속 나와요.
"API 호출해서 데이터 받아와", "API 키 발급받아야 해", "API 응답이 JSON으로 와"…
처음엔 그냥 넘어갔는데, 자동화 시스템을 만들기 시작하면서 이걸 제대로 이해하지 않으면 진짜 막힌다는 걸 느꼈어요.
비전공자 기준으로 최대한 쉽게 정리해볼게요.

API가 뭔가요? — 식당 웨이터 비유

API는 Application Programming Interface의 약자예요. 단어 자체는 어렵게 보이지만, 역할은 단순해요.

식당을 떠올려보면 이해가 빨라요.

🍽️ 손님(내 프로그램) → 주문을 전달 → 웨이터(API) → 주방에 전달 → 주방(서버·데이터베이스)
주방에서 음식이 나오면 → 웨이터(API) → 손님(내 프로그램)에게 전달

손님(내 코드)은 주방(서버) 내부 사정을 몰라도 돼요. 웨이터(API)에게 원하는 걸 말하면, 웨이터가 주방과 소통하고 결과를 가져다줘요.

예를 들어, 업비트 거래소의 비트코인 현재가를 가져오고 싶다면, 업비트가 만들어놓은 API 주소로 요청을 보내기만 하면 돼요. 업비트 서버 내부에서 어떻게 데이터를 꺼내오는지는 전혀 몰라도 되는 거죠.

정리: API는 두 프로그램 사이에서 요청을 전달하고 결과를 돌려주는 창구예요. 내 코드가 외부 서비스(거래소, 텔레그램, 날씨 서비스 등)와 대화할 수 있게 해주는 규격화된 통로예요.

JSON이 뭔가요? — 데이터를 주고받는 공통 언어

API로 요청을 보내면, 서버가 데이터를 돌려줘요. 이 데이터가 담기는 형식이 바로 JSON(JavaScript Object Notation)이에요.

이름엔 JavaScript가 들어있지만, 특정 언어에 종속된 게 아니에요. 파이썬, 자바, Go 어디서든 다 읽고 쓸 수 있는 범용 데이터 포맷이에요.

구조는 간단해요. 키(Key): 값(Value) 쌍으로 이루어져 있어요. 마치 사전처럼요.

예를 들어, 거래소 API에 비트코인 현재가를 요청하면 이런 형태로 응답이 와요:

# 거래소 시세 조회 API 응답 예시 (JSON)
{
  "market": "KRW-BTC",     // 마켓 코드 (원화-비트코인)
  "trade_price": 142500000// 현재가 (원)
  "change": "RISE",       // 전일 대비 상승/하락
  "change_rate": 0.0213,  // 변동률 (2.13%)
  "timestamp": 1748822400000 // 시각 (Unix 타임스탬프)
}

읽는 법은 직관적이에요. "trade_price": 142500000 → "현재가"는 142,500,000원. 파이썬에서 이 값을 꺼내 쓰려면 이렇게 하면 돼요:

# JSON 응답에서 현재가 꺼내기
data = response.json()                 # API 응답을 파이썬 딕셔너리로 변환
price = data["trade_price"]          # 키 이름으로 값을 꺼냄
print(price)                         # 142500000
JSON의 중괄호 {}는 하나의 객체(묶음), 대괄호 []는 리스트(여러 개)를 의미해요. 복잡해 보여도 키 이름을 따라가다 보면 데이터 구조가 읽혀요.

자동화 시스템의 API 통신 흐름

API의 기본은 요청(Request)응답(Response)이에요. 내가 요청을 보내고, 서버가 응답을 돌려주는 구조예요.

트레이딩 자동화 시스템을 예로 들면 이런 흐름이에요:

STEP 1. 시세 조회 API 호출 → 거래소에서 현재가 JSON 응답 수신
STEP 2. 조건 검사 → 현재가가 설정한 매수 타점 이하인지 확인
STEP 3. 조건 충족 시 → 매수 주문 API 호출 (수량, 가격 JSON으로 전달)
STEP 4. 주문 결과 응답 수신 → 텔레그램 봇 API로 알림 전송

각 단계가 모두 API 호출과 JSON 응답으로 연결돼 있어요. 파이썬 입장에서는 requests.get(url) 또는 requests.post(url, json=데이터) 한 줄이 전부예요. 이 안에서 HTTP 통신, 데이터 직렬화 같은 복잡한 일들이 자동으로 처리돼요.

GET vs POST — 데이터를 조회할 때는 GET, 데이터를 전송하거나 실행시킬 때는 POST를 주로 써요. 시세 조회는 GET, 매수 주문 실행은 POST인 경우가 많아요.

API Key 보안 — 가장 중요한 부분

거래소나 유료 API를 쓰려면 API Key(키)를 발급받아야 해요. 이 키가 있어야 서버가 "이 요청이 진짜 허가된 사람한테서 왔구나"라고 인식해요.

문제는 이 키가 유출되면 내 계정을 타인이 완전히 제어할 수 있다는 거예요. 거래소 API 키가 털리면 내 자산을 마음대로 팔거나 출금할 수 있어요. 실제로 GitHub에 키를 올렸다가 수십 분 안에 계좌가 털리는 사고가 꽤 많이 일어나요.

⚠️ API Key는 절대 코드에 직접 쓰지 마세요.
GitHub, 블로그, 카카오톡 어디든 공개 공간에 올라가는 순간 자동화 봇이 수집해요. 발급받는 즉시 .env 파일에 넣고, 코드에는 환경변수로만 불러오세요.
관리 항목 위험한 방법 ❌ 안전한 방법 ✅
키 보관 코드 파일에 직접 입력 .env 파일에 저장, .gitignore 등록
접근 제한 IP 제한 없이 발급 IP 화이트리스트 등록 (내 서버 IP만 허용)
권한 설정 조회·매매·출금 모두 허용 용도별 분리 (조회용 / 매매용 / 출금 비허용)
유출 시 대응 방치 즉시 키 폐기 후 재발급, 거래 내역 확인
환경변수 사용 예시 (python-dotenv)

# .env 파일
API_KEY=여기에_실제키
API_SECRET=여기에_실제시크릿

# Python 코드
from dotenv import load_dotenv
import os
load_dotenv()
key = os.getenv("API_KEY")   # 코드엔 키가 보이지 않음

API와 JSON, 처음엔 낯설어도 패턴이 단순해요. 요청 보내고 → JSON 받고 → 원하는 키로 값 꺼내고. 이걸 반복하는 게 자동화 코드의 대부분이에요.

API 키 관리만 처음부터 습관 잡아두면 나중에 골치 아플 일이 줄어요. 귀찮더라도 .env부터 만들고 시작하는 걸 권해요.

반응형
투자지표 대시보드 RSS 구독