이 튜토리얼에서는 Gemini CLI를 활용하여 알라딘 API를 사용한 책 검색 Flutter Android 앱을 만드는 과정을 설명합니다. 초급자도 쉽게 따라할 수 있도록 API의 기본 개념부터 설명하겠습니다.

1. API 기본 개념 이해

API란?

  • API (Application Programming Interface): 서로 다른 프로그램이 데이터를 주고받을 수 있게 해주는 창구
  • 알라딘 API: 알라딘 온라인 서점의 책 정보를 우리 앱에서 사용할 수 있게 해주는 서비스

요청과 응답 구조

우리 앱 → API 요청 → 알라딘 서버
우리 앱 ← API 응답 ← 알라딘 서버

요청 URL 구조:

  • 기본 주소: [https://www.aladin.co.kr/ttb/api/ItemSearch.aspx/](https://www.aladin.co.kr/ttb/api/ItemSearch.aspx/`)
  • 매개변수들:
    • ttbkey: 인증키 (알라딘에서 발급받은 고유 키)
    • Query: 검색할 책 제목
    • MaxResults: 가져올 결과 개수
    • output: 응답 형식 (js = JSON)

2. 프로젝트 준비

Flutter 프로젝트 생성

flutter create book_search_app
cd book_search_app

필요한 패키지 추가 (pubspec.yaml)

dependencies:
  flutter:
    sdk: flutter
  http: ^1.1.0  # API 요청용
  cached_network_image: ^3.3.0  # 이미지 캐싱용

3. Gemini CLI로 개발 시작하기

기본 구조 생성 요청

Gemini CLI에 다음과 같이 요청:

현재 flutter app 생성한 상태야.                                                                                         │
아래 내용 참고하여 책 조회하는 앱 생성해.


요청
[https://www.aladin.co.kr/ttb/api/ItemSearch.aspx/?ttbkey=ttbpointer811508002\&Query=gpt\&QueryType=Title\&MaxResults=3\&start=1\&SearchTarget=Book\&output=js\&Version=20131101](https://www.aladin.co.kr/ttb/api/ItemSearch.aspx/?ttbkey=ttbpointer811508002\&Query=gpt\&QueryType=Title\&MaxResults=3\&start=1\&SearchTarget=Book\&output=js\&Version=20131101)

응답
{
  "version": "20131101",
  "logo": "[http://image.aladin.co.kr/img/header/2011/aladin_logo_new.gif](http://image.aladin.co.kr/img/header/2011/aladin_logo_new.gif)",
  "title": "알라딘 검색결과 - gpt",
  "link": "[http://www.aladin.co.kr/search/wsearchresult.aspx?KeyTitle=gpt&SearchTarget=book&partner=openAPI](http://www.aladin.co.kr/search/wsearchresult.aspx?KeyTitle=gpt&SearchTarget=book&partner=openAPI)",
  "pubDate": "Mon, 04 Aug 2025 02:45:37 GMT",
  "totalResults": 606,
  "startIndex": 1,
  "itemsPerPage": 3,
  "query": "gpt",
  "searchCategoryId": 0,
  "searchCategoryName": "전체",
  "item": [
    {
      "title": "요즘 교사를 위한 AI 수업 활용 가이드 with 2022 개정 교육과정 - 챗GPT부터 캔바, 구글 스프레드시트, API 연동까지",
      "link": "[https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=362615298&partner=openAPI&start=api](https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=362615298&partner=openAPI&start=api)",
      "author": "박진환, 공지훈, 서원진 (지은이)",
      "pubDate": "2025-05-05",
      "description": "2022 개정 교육과정에 맞춰 디지털 기반 아날로그 수업을 실현하기 위한 실전 AI 활용법을 담고 있다. 챗GPT, 구글 스프레드시트, 캔바, 퍼플렉시티, 클로드 등 다양한 AI 도구를 수업 준비부터 행정 업무, 학급 운영까지 교육 전반에 적용할 수 있도록 구체적인 활용 방
법을 제시한다.",
      "isbn": "K652038732",
      "isbn13": "9791169213615",
      "itemId": 362615298,
      "priceSales": 18000,
      "priceStandard": 20000,
      "mallType": "BOOK",
      "stockStatus": "",
      "mileage": 1000,
      "cover": "[https://image.aladin.co.kr/product/36261/52/coversum/k652038732_1.jpg](https://image.aladin.co.kr/product/36261/52/coversum/k652038732_1.jpg)",
      "categoryId": 212364,
      "categoryName": "국내도서>컴퓨터/모바일>인공지능",
      "publisher": "한빛미디어",
      "salesPoint": 11535,
      "adult": false,
      "fixedPrice": true,
      "customerReviewRank": 10,
      "subInfo": {}
    },

image.pngimage.png클릭하여 확대

image.pngimage.png클릭하여 확대

API 서비스 클래스 생성 요청

"알라딘 API를 호출하는 BookApiService 클래스를 만들어줘.
- http 패키지 사용
- 검색 메서드 포함
- 에러 처리 포함"

모델 클래스 생성 요청

"알라딘 API 응답을 위한 Book 모델 클래스를 만들어줘.
- JSON 파싱 기능 포함
- 책 제목, 저자, 출판사, 가격, 이미지 URL 필드 포함"

4. 주요 화면 구성

검색 화면 개발 요청

"책 검색 화면을 만들어줘.
- TextField로 검색어 입력
- 검색 버튼
- 로딩 상태 표시
- 검색 결과를 ListView로 표시"

결과 표시 위젯 개발 요청

"책 검색 결과를 카드 형태로 보여주는 위젯을 만들어줘.
- 책 표지 이미지
- 제목, 저자, 출판사 정보
- 가격 정보
- 깔끔한 카드 디자인"

5. 개발 흐름 및 팁

Gemini CLI 활용 전략

  1. 단계적 요청

    • 한 번에 모든 것을 요청하지 말고 단계별로 요청
    • 각 기능별로 나누어 개발
  2. 구체적인 요청

    ❌ "앱을 만들어줘"
    ✅ "검색 TextField와 버튼이 있는 StatefulWidget을 만들어줘"
    
  3. 에러 해결 요청

    "다음 에러가 발생했는데 해결해줘: [에러 메시지]"
    

API 연동 과정

  1. API 키 설정

    • 알라딘에서 API 키 발급받기
    • 코드에서 안전하게 사용하기
  2. HTTP 요청 구현

    • GET 요청으로 데이터 가져오기
    • JSON 응답 파싱하기
  3. 상태 관리

    • 로딩 상태 관리
    • 에러 상태 처리
    • 검색 결과 저장

디버깅 및 테스트

  1. API 응답 확인

    print('API Response: $response');
    
  2. 네트워크 권한 설정 (android/app/src/main/AndroidManifest.xml)

    <uses-permission android:name="android.permission.INTERNET" />
    

6. 완성 후 개선사항

Gemini CLI로 추가 기능 요청

"다음 기능들을 추가해줘:
- 검색 기록 저장
- 즐겨찾기 기능
- 책 상세 정보 화면
- 더 나은 UI/UX 디자인"

7. 마무리

이 튜토리얼을 통해 Gemini CLI를 활용하여 효율적으로 Flutter 앱을 개발하는 방법을 배웠습니다. 핵심은:

  • 명확하고 구체적인 요청하기
  • 단계별로 기능 구현하기
  • 에러 발생 시 즉시 해결 요청하기
  • API의 기본 구조 이해하기

Gemini CLI는 초급자도 쉽게 복잡한 앱을 만들 수 있게 도와주는 강력한 도구입니다. 계속 연습하면서 더 나은 앱을 만들어보세요!