Data Engineering/python
EP18 | 고급 Python 활용 #7 | API 데이터 활용 (REST API, JSON 처리)
ygtoken
2025. 3. 19. 23:03
728x90
이 글에서 다루는 개념
Python에서는 REST API를 사용하여 웹 데이터를 가져오거나 서버와 통신할 수 있습니다.
이번 글에서는 다음 내용을 학습합니다.
- REST API 개념 및 활용
- Python requests 모듈을 사용한 API 호출
- JSON 데이터 처리 (json 모듈 활용)
- 공공 데이터 API 요청 및 응답 처리
1️⃣ REST API란?
📌 **REST API(Representational State Transfer API)**란?
- HTTP 프로토콜을 사용하여 클라이언트와 서버가 데이터를 주고받는 방식
- 대부분의 웹 서비스(API)는 JSON(JavaScript Object Notation) 형식으로 데이터를 주고받음
- GET, POST, PUT, DELETE 등의 HTTP 메서드를 사용하여 데이터를 처리
📌 API 요청 방식 예제
메서드 | 설명 |
GET | 데이터를 조회 |
POST | 데이터를 생성 |
PUT | 데이터를 수정 |
DELETE | 데이터를 삭제 |
2️⃣ requests 모듈을 사용한 API 호출
📌 설치 (requests가 없을 경우)
pip install requests
🔹 GET 요청 (데이터 조회)
import requests
url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url) # GET 요청
# 응답 데이터 출력
print(response.status_code) # 응답 코드 (200: 성공)
print(response.json()) # JSON 데이터 출력
📌 출력 예시
{
"userId": 1,
"id": 1,
"title": "API 데이터 활용 예제",
"body": "REST API를 호출하여 데이터를 가져오는 예제입니다."
}
🔹 POST 요청 (데이터 생성)
url = "https://jsonplaceholder.typicode.com/posts"
data = {"title": "Python API", "body": "API 요청 예제", "userId": 1}
response = requests.post(url, json=data)
print(response.json()) # 서버 응답 출력
📌 POST 요청은 새로운 데이터를 생성할 때 사용됨
- json=data → 데이터를 JSON 형식으로 전송
🔹 PUT 요청 (데이터 수정)
url = "https://jsonplaceholder.typicode.com/posts/1"
update_data = {"title": "Updated Title", "body": "Updated content"}
response = requests.put(url, json=update_data)
print(response.json())
- 기존 데이터를 수정할 때 사용
🔹 DELETE 요청 (데이터 삭제)
url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.delete(url)
print(response.status_code) # 200이면 성공
3️⃣ JSON 데이터 처리 (json 모듈 활용)
📌 JSON(JavaScript Object Notation)란?
- 데이터를 키-값 형식의 구조화된 문자열로 저장하는 포맷
- Python의 딕셔너리와 유사한 구조
📌 JSON 데이터 변환 (json.loads(), json.dumps())
import json
# JSON 문자열 → Python 딕셔너리 변환
json_data = '{"name": "Alice", "age": 25, "city": "Seoul"}'
data = json.loads(json_data)
print(data["name"]) # Alice
# Python 딕셔너리 → JSON 문자열 변환
json_string = json.dumps(data, indent=4)
print(json_string)
📌 출력 결과
{
"name": "Alice",
"age": 25,
"city": "Seoul"
}
4️⃣ 공공 데이터 API 활용 예제
📌 공공 데이터 포털에서 API 키 발급 후 활용 가능
예제: https://api.publicapis.org/entries (무료 API 목록 조회)
import requests
url = "https://api.publicapis.org/entries"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
for entry in data["entries"][:5]: # 상위 5개 API 출력
print(f"API: {entry['API']} | 설명: {entry['Description']}")
else:
print("API 요청 실패")
📌 출력 예시
API: Cat Facts | 설명: 무작위 고양이 정보 제공 API
API: OpenWeather | 설명: 날씨 정보 API
API: NASA | 설명: NASA 오픈 데이터 API
...
📌 실전 문제: API 데이터 활용 연습하기
✅ 문제 1: requests를 사용하여 JSON 데이터 가져오기
📌 https://jsonplaceholder.typicode.com/users/1 API에서 데이터를 가져와 출력하세요.
import requests
# 🔽 여기에 코드 작성
import requests
url = "https://jsonplaceholder.typicode.com/users/1"
response = requests.get(url)
if response.status_code == 200:
print(response.json())
else:
print("API 요청 실패")
✅ 문제 2: POST 요청을 사용하여 새로운 데이터 생성하기
📌 새로운 게시글을 추가하는 POST 요청을 보내고 응답을 출력하세요.
import requests
# 🔽 여기에 코드 작성
import requests
url = "https://jsonplaceholder.typicode.com/posts"
data = {"title": "New Post", "body": "This is a test post.", "userId": 1}
response = requests.post(url, json=data)
print(response.json())
✅ 문제 3: JSON 데이터를 Python 딕셔너리로 변환하기
📌 다음 JSON 문자열을 파이썬 딕셔너리로 변환하고, age 값을 출력하세요.
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
# 🔽 여기에 코드 작성
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_data)
print(data["age"]) # 30
✅ 문제 4: 공공 데이터 API를 사용하여 3개의 무료 API 목록 출력하기
📌 https://api.publicapis.org/entries API에서 상위 3개의 무료 API 이름과 설명을 출력하세요.
import requests
# 🔽 여기에 코드 작성
import requests
url = "https://api.publicapis.org/entries"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
for entry in data["entries"][:3]: # 상위 3개 API 출력
print(f"API: {entry['API']} | 설명: {entry['Description']}")
else:
print("API 요청 실패")
728x90