이 튜토리얼에서는 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.png클릭하여 확대
image.png클릭하여 확대
API 서비스 클래스 생성 요청
"알라딘 API를 호출하는 BookApiService 클래스를 만들어줘.
- http 패키지 사용
- 검색 메서드 포함
- 에러 처리 포함"
모델 클래스 생성 요청
"알라딘 API 응답을 위한 Book 모델 클래스를 만들어줘.
- JSON 파싱 기능 포함
- 책 제목, 저자, 출판사, 가격, 이미지 URL 필드 포함"
4. 주요 화면 구성
검색 화면 개발 요청
"책 검색 화면을 만들어줘.
- TextField로 검색어 입력
- 검색 버튼
- 로딩 상태 표시
- 검색 결과를 ListView로 표시"
결과 표시 위젯 개발 요청
"책 검색 결과를 카드 형태로 보여주는 위젯을 만들어줘.
- 책 표지 이미지
- 제목, 저자, 출판사 정보
- 가격 정보
- 깔끔한 카드 디자인"
5. 개발 흐름 및 팁
Gemini CLI 활용 전략
-
단계적 요청
- 한 번에 모든 것을 요청하지 말고 단계별로 요청
- 각 기능별로 나누어 개발
-
구체적인 요청
❌ "앱을 만들어줘" ✅ "검색 TextField와 버튼이 있는 StatefulWidget을 만들어줘"
-
에러 해결 요청
"다음 에러가 발생했는데 해결해줘: [에러 메시지]"
API 연동 과정
-
API 키 설정
- 알라딘에서 API 키 발급받기
- 코드에서 안전하게 사용하기
-
HTTP 요청 구현
- GET 요청으로 데이터 가져오기
- JSON 응답 파싱하기
-
상태 관리
- 로딩 상태 관리
- 에러 상태 처리
- 검색 결과 저장
디버깅 및 테스트
-
API 응답 확인
print('API Response: $response');
-
네트워크 권한 설정 (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는 초급자도 쉽게 복잡한 앱을 만들 수 있게 도와주는 강력한 도구입니다. 계속 연습하면서 더 나은 앱을 만들어보세요!