소개
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)서버 로그 확인
!!!! 창 여러개와 마우스 키보드로 엉망이던 책상을 깔끔하게 정리한 느낌
(왼쪽 ) 제미나이 CLI (오른쪽 위) ssh 원격 접속한 서버 (오른쪽 아래) 파일 실행 후 로그
Gemini CLI 를 통한 코드 수정에서 부터 정리문서 정리까지
구글 검색을 통한 코드 반영
직접 공공 데이터 포털의 API 문서, 상세 기능 명세 검색해서
수정 제안 3가지 ( URL 주소, 파라미터, 응답 데이터 구조)
코드 수정
테스트 후 로그 분석 후 코드 반영 재수정
모두 작업 후 그동안 작업한 문서 만들어 달라고 하기
그동안은 여기저기 돌아다니며 해서 정리도 쉽지 않습니다. 몇시간을 하고도 나 뭐했지 했었기에
이또한 아주 만족스럽네요.
에러 로그 3종 요약
Policy Falsified
API 보안 정책 위반
원인: 잘못된 서비스 키, 권한 없음, 필수값 누락 등
404 Not Found
존재하지 않는 URL 호출
예: FastAPI에서 정의되지 않은 경로 요청
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 정보를 줌
친절 하게 어디서 어디를 열어 그 값을 달라고 하길래 그대로 주고 코드 수정, 마지막 Test 완료
결국 !!!
호출 하고자 했던 문화누리 API 공사중 !
이것으로 마지막주 작업완료 !
배운점
공공API 의 상세 안내서인 설계명세에 틀린 것이 많았어요. 다음엔 postman 호출을 해보고 curl 정보를 주고 거기서 부터 시작해야 겠습니다.
16기부터 에러를 퍼플렉시티, 제미나이, 클로드, 챗GPT 를 통해 몇백번의 질문을 해 본거 같아요. 들인 시간과 해결된 결과를 볼 때 너무 비효율적이란 생각이 들었어요. 하지만! 덕분에 터미널창에 편해졌습니다.
에러도 결국 논리적으로 단계적으로 접근하는게 필요, 그것을 컨트롤 할 수 있는 수준은 아니어서 역시 또 뱅뱅 돌겠지만 이번 에러는 파일 하나이기도 하지만, 하나의 창에서 해결하는 과정이 '내가 무엇을 하는지 " 정리하는데 에너지가 많이 들지 않아 좋았습니다.
결국 챗봇 구현은 못했고, 역시 중고폰 매입을 마지막까지 안한건 잘했고 ^^::: 하지만 원래 목적했던 fastapi 서버, api 에 대해 분명 많이 알게 된 17기였습니다.