Google CLI 첫 사용기 공공API 호출에러 디버깅

소개

FastAPI 서버에서 파이썬 코드로 공공 API 호출로 정보를 가져와 대답하는 챗봇이 목표였습니다.
그런데 API 호출 에러가 계속 발생했어요. 이를 다양한 LLM 를 사용해 원인찾기 3일차,
마지막으로 해본다는 화요일 , 처음으로 Google CLI 를 깔고 사용해 봤습니다.

결론적으로 에러 원인을 잡았는데 ,,,,
현재 호출하고자 했던 문화누리 API 서비스 정검중!

짠~하며 마지막주 챗봇구현은 결국 못했지만,
터미널 위에서 처음 사용해본 Gemini 사용과정이 재밌어 기분좋게 쓴 4주차 사례글입니다.

과정

디버깅 루틴:

1. 제미나이 (Gemini CLI)

내 컴퓨터에서 코드를 열어
수정하고 저장까지 자동으로 처리!

2. 로컬 터미널

scp 명령어로 수정된 코드를 FastAPI 서버에 바로 전송!

scp 파일루트/main.py root@서버_IP:/root/fastapi-server/

3. 원격 서버 터미널

서버 재시작 → 테스트 → 로그 확인까지 한 번에!

ssh [email protected]         # 원격 서버 접속  
sudo systemctl restart fastapi  # 서버 재시작  
sudo journalctl -u fastapi -f   # 로그 실시간 확인



CLI 를 이용한 디버깅 과정의 장점 :


1. 과거 방식: Ocean Digital 콘솔창

웹 UI → 콘솔 버튼 클릭 → 새 창 열기 → 타이핑 시작...
퍼플렉시티, 클로드에 콘솔창에 터미널에 정신 없었답니다.

2. 터미널 기반 전환 효과

터미널에서 바로 ssh 를 이용한 원격 조작 가능
작업 흐름의 효율과 편의성 수직 상승!
익숙해지니 “한 줄 입력 → 바로 실행” 세상 편리



Gemini CLI 설치로 여기 저기 UI 창을 어지럽게 돌아다니지 않고
터미널 창 3개로 1) 코드 수정 2)코드 교체 3)서버 로그 확인


!!!! 창 여러개와 마우스 키보드로 엉망이던 책상을 깔끔하게 정리한 느낌

gemini라는 단어가있는 컴퓨터 화면의 스크린 샷

(왼쪽 ) 제미나이 CLI (오른쪽 위) ssh 원격 접속한 서버 (오른쪽 아래) 파일 실행 후 로그

Gemini CLI 를 통한 코드 수정에서 부터 정리문서 정리까지

한국어로 메시지가있는 검은 색 화면



구글 검색을 통한 코드 반영

  • 직접 공공 데이터 포털의 API 문서, 상세 기능 명세 검색해서

  • 수정 제안 3가지 ( URL 주소, 파라미터, 응답 데이터 구조)

한국어 텍스트가있는 검은 색 화면의 스크린 샷



코드 수정

다른 유형의 코드를 보여주는 컴퓨터 화면의 스크린 샷


테스트 후 로그 분석 후 코드 반영 재수정

한국 컴퓨터 화면의 스크린 샷

모두 작업 후 그동안 작업한 문서 만들어 달라고 하기
그동안은 여기저기 돌아다니며 해서 정리도 쉽지 않습니다. 몇시간을 하고도 나 뭐했지 했었기에
이또한 아주 만족스럽네요.

한국어 텍스트가있는 검은 색 화면


에러 로그 3종 요약

  1. Policy Falsified

    • API 보안 정책 위반

    • 원인: 잘못된 서비스 키, 권한 없음, 필수값 누락 등

  2. 404 Not Found

    • 존재하지 않는 URL 호출

    • 예: FastAPI에서 정의되지 않은 경로 요청

  3. 502 Bad Gateway / Request Error

    • 외부 API 서버로부터 응답 실패

    • 원인: 네트워크 단에서 연결 실패, 게이트웨이 에러



코드 수정 이야기: “왜 안 되지?”에서 “이제 된다!”까지

1단계 뭐가 문제지?

  • 오류 메시지가 계속 뜸 (Policy Falsified, 404, 502 등)

  • API 호출했는데 응답이 안 오거나 이상한 값이 옴


2단계 혹시 이게 원인 아닐까?

  • API 문서에 적힌 정보가 실제랑 다름

  • 요청할 때 보낸 값이나 주소가 잘못됐을 수도

  • 너무 많은 파라미터를 보내서 서버가 거부한 걸 수도


3단계 하나씩 바꿔보자

🔄 주소부터 바꿔봄

  • 오래된 API 주소 대신 새로운 API 주소로 교체

🔄 카테고리 방식 맞춰보기

  • 명세에서 정해준 방식대로 CATEGORY_CODES 처리 방법 변경

🔄 파라미터 이름 다시 확인

  • 예전엔 prfnfrom, prfnTo

  • 지금은 from, to

  • → 이름을 문서에 맞게 바꿈

🔄 JSON으로 달라고 말하기

  • 서버가 XML로 응답을 줘서 파싱에 문제

  • Accept: application/json 헤더 추가

🔄 보내는 값 줄여보기

  • 혹시 너무 많은 걸 보내서 에러가 나는 걸까?

  • numOfRows, pageNo 같은 값은 잠깐 뺐다가 테스트

🔄 다시 원래대로 복원

  • 오류 원인이 아니면 주석 처리했던 값들을 다시 추가


5차 수정 후 제미나이의 최종 결정

문제의 원인이 코드가 아닌 API 키 자체에 있다고 최종 결론을 내렸습니다.

다시 의문 제시

한국어로 작성된 메시지가있는 검은 색 화면

“”””""
Postman에서는 되는데 코드에서는 안 되는 경우는 개발자들이 흔하게 겪는 문제라는데 (진짜일까?)
원인은 거의 항상Postman이 보내는 요청과 코드가 보내는 요청 사이에 미세한 차이가 있기 때문

- postman : API 개발 및 테스트를 위한 앱플랫폼
- CURL : URL 문법을 사용하여 데이터를 전송하는 데 사용되는 강력한 명령줄 도구.
"client URL"의 약자.
API를 테스트하고 디버깅하는 데 매우 유용하게 사용

postman 의 cURL 정보를 줌

Adobe Adobe Adobe Adobe에서 코드 편집기의 스크린 샷

친절하게 어디서 어디를 열어 그 값을 달라고 하길래 그대로 주고 코드 수정, 마지막 Test 완료

결국 !!!
호출 하고자 했던 문화누리 API 공사중 !
이것으로 마지막주 작업완료 !

한국어 텍스트가있는 웹 사이트의 스크린 샷



배운점

  • 공공API 의 상세 안내서인 설계명세에 틀린 것이 많았어요. 다음엔 postman 호출을 해보고 curl 정보를 주고 거기서 부터 시작해야 겠습니다.

  • 16기부터 에러를 퍼플렉시티, 제미나이, 클로드, 챗GPT 를 통해 몇백번의 질문을 해 본거 같아요. 들인 시간과 해결된 결과를 볼 때 너무 비효율적이란 생각이 들었어요. 하지만! 덕분에 터미널창에 편해졌습니다.

  • 에러도 결국 논리적으로 단계적으로 접근하는게 필요, 그것을 컨트롤 할 수 있는 수준은 아니어서 역시 또 뱅뱅 돌겠지만 이번 에러는 파일 하나이기도 하지만, 하나의 창에서 해결하는 과정이 '내가 무엇을 하는지 " 정리하는데 에너지가 많이 들지 않아 좋았습니다.

  • 결국 챗봇 구현은 못했고, 역시 중고폰 매입을 마지막까지 안한건 잘했고 ^^::: 하지만 원래 목적했던 fastapi 서버, api 에 대해 분명 많이 알게 된 17기였습니다.

3
4개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요