[Python] 카카오 도서 검색 API 활용 방법 (FastAPI)

728x90

'카카오 API'를 활용해 간단하면서도 실용적인 도서 검색 애플리케이션을 만들어보려 합니다.

보통 API를 테스트할 때 프론트엔드에서 직접 호출하기도 하지만, 실제 프로덕트 환경을 고려하여 API Key 보안데이터 가공을 위해 FastAPI를 중간 다리(Proxy)로 두는 구조로 설계했습니다.

Tech Stack

  • Open API: Kakao Daum Search API (Book)
  • Backend: Python, FastAPI
  • Network: HTTPX (Python), Fetch API (JS)

1. Kakao Developers 설정 (API 키 발급)

가장 먼저 카카오 개발자 센터에서 내 애플리케이션을 등록해야 합니다.

  1. Kakao Developers 접속 및 로그인
  2. 상단 탭 '앱' -> '앱 생성'
  3. 생성된 앱 선택 후 좌측 메뉴의 [앱] -> [일반] -> [앱 키]에서 REST API 키를 복사해 둡니다.

⚠️ 주의: REST API 키는 타인에게 노출되지 않도록 관리해야 합니다. 이번 프로젝트에서 백엔드 서버를 따로 두는 이유이기도 합니다.


2. Backend 개발 (FastAPI)

FastAPI는 가볍고 비동기 처리에 강해 외부 API 통신을 중계하기에 최적입니다.

패키지 설치

pip install fastapi uvicorn httpx

main.py 작성
클라이언트(React Native)로부터 검색어를 받아 카카오 API로 토스하고, 결과를 다시 돌려주는 간단한 로직입니다.

from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import httpx

app = FastAPI()

# CORS 설정 (React Native에서 접근 허용)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 실제 배포 시에는 구체적인 도메인을 지정하세요.
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

KAKAO_API_KEY = "여기에_발급받은_REST_API_키를_넣으세요"

@app.get("/search/books")
async def search_books(query: str):
    url = "https://dapi.kakao.com/v3/search/book"
    headers = {"Authorization": f"KakaoAK {KAKAO_API_KEY}"}
    params = {"query": query, "size": 10} # 10건만 검색

    async with httpx.AsyncClient() as client:
        response = await client.get(url, headers=headers, params=params)

        if response.status_code != 200:
            raise HTTPException(status_code=response.status_code, detail="Kakao API Error")

        return response.json()

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

서버 실행

python main.py

이제 http://localhost:8000/search/books?query=파이썬으로 접속했을 때 JSON 데이터가 잘 넘어오는지 확인해보세요.

 

728x90