🍳Python 프로젝트 레시피
🧑🍳 Python 프로젝트 레시피: Part 3
code.with.siyeon
2025. 5. 12. 17:35
라이브러리 & API 사용
외부 데이터와 상호작용하는 기본 도구들
✅ 1. requests – API 요청 라이브러리
외부 서버나 백엔드와 통신할 때 사용하는 가장 대표적인 라이브러리입니다.
pip install requests
import requests
# GET 요청
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
data = response.json()
print(data)
# POST 요청
payload = {"title": "Hello", "body": "World"}
response = requests.post("https://example.com/api", json=payload)
response.json()을 쓰면 JSON 데이터를 바로 딕셔너리로 변환해줘요!
✅ 2. json – JSON 다루기
API와 데이터를 주고받을 때 가장 흔하게 사용하는 포맷은 JSON입니다.
import json
# 파이썬 객체 → JSON 문자열로 변환
data = {"name": "시연", "age": 21}
json_string = json.dumps(data)
# JSON 문자열 → 파이썬 객체로 변환
parsed_data = json.loads(json_string)
✅ 3. os – 시스템 경로 관리
파일 위치, 환경 설정 등을 다룰 때 유용한 모듈입니다.
import os
# 현재 파일 경로
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# .env 변수 가져오기
SECRET_KEY = os.getenv("SECRET_KEY")
🛠️ 내가 겪었던 오류 & 해결법
🔸 오류 1: requests.exceptions.Timeout
- 원인: API 서버가 느리거나 응답이 없을 경우
✅ 해결:
- timeout 옵션을 추가해 제한 설정
response = requests.get(url, timeout=5)
🔸 오류 2: json.decoder.JSONDecodeError
- 원인: 응답이 JSON 형식이 아닐 때 .json()을 호출함
✅ 해결:
- 응답을 먼저 .text로 확인해보고 JSON 형식인지 체크
print(response.text)
🔸 오류 3: os.getenv()가 None을 반환
- 원인: .env 파일에서 해당 변수명이 누락되었거나, load_dotenv() 호출을 하지 않음
✅ 해결:
- print(os.environ)으로 확인하거나 기본값 설정
os.getenv("SECRET_KEY", "default_secret")
📌 실전 경험 메모
Docverse 프로젝트의 회원가입 API와 마이페이지 기능을 개발할 때, requests를 사용해 외부 서버와 데이터를 주고받았습니다.
당시 requests.get()에서 응답 시간이 길어지는 바람에 timeout을 설정하지 않아 무한 대기 상태가 발생했고, 그 후엔 항상 timeout=5를 기본으로 설정하게 됐습니다.
또한 .json() 호출 시 DecodeError가 떠서 디버깅한 끝에, 응답이 HTML로 오는 경우도 있다는 걸 처음 알게 되었습니다.
🧾 마무리 요약
requests | API 요청/응답 | .json() 호출 전 .text 확인 |
json | JSON 직렬화/역직렬화 | 문자열 형식 주의 |
os | 경로 설정, 환경 변수 접근 | .env 누락 시 None 반환 주의 |