Python과 ChatGPT API를 활용한 자동화 로봇 개발

2_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발

atomicdev 2024. 8. 15. 16:02
728x90

강의 2: HTTP와 API 기초

목표:

이 강의에서는 HTTP 프로토콜과 API의 기본 개념을 이해하고, Python에서 API를 호출하는 방법을 학습합니다. 수강자는 HTTP의 주요 메서드를 이해하고, Python의 requests 라이브러리를 사용하여 API를 호출할 수 있게 됩니다.


1. HTTP의 기본 개념

HTTP 메서드

HTTP(하이퍼텍스트 전송 프로토콜)는 웹에서 데이터를 전송하기 위한 규약입니다. HTTP 메서드는 클라이언트(사용자)와 서버 간에 통신할 때 사용됩니다. 주요 HTTP 메서드에는 다음이 포함됩니다:

  1. GET: 서버에서 데이터를 요청할 때 사용됩니다. 웹 브라우저에서 URL을 입력하고 페이지를 로드하는 것이 대표적인 GET 요청입니다.
    • 예시: 브라우저에서 https://www.google.com을 입력하면, 브라우저가 해당 서버에 GET 요청을 보내 페이지를 받아옵니다.
  2. POST: 서버에 데이터를 보내고, 서버에서 이 데이터를 처리할 때 사용됩니다. 예를 들어, 로그인 폼을 제출할 때 사용됩니다.
    • 예시: 사용자가 로그인 폼을 작성하고 제출하면, 브라우저는 서버에 POST 요청을 보내고 사용자 데이터를 전송합니다.
  3. PUT: 서버에서 데이터를 업데이트할 때 사용됩니다. 기존 데이터를 덮어씁니다.
    • 예시: 사용자가 프로필 정보를 수정하면, 브라우저는 서버에 PUT 요청을 보내고 수정된 데이터를 전송합니다.
  4. DELETE: 서버에서 데이터를 삭제할 때 사용됩니다.
    • 예시: 사용자가 계정을 삭제하면, 서버에 DELETE 요청이 전송되어 계정이 삭제됩니다.

2. API란 무엇인가? REST API의 개념

API 개요

API(응용 프로그램 인터페이스)는 소프트웨어 간의 상호작용을 가능하게 하는 규칙 집합입니다. 웹 API는 클라이언트가 서버의 기능을 사용할 수 있도록 하는 인터페이스를 제공합니다.

REST API

REST(Representational State Transfer) API는 웹에서 데이터를 전송하는 방식 중 하나입니다. REST API는 다음과 같은 원칙을 따릅니다:

  • 자원(Resource): 서버의 데이터를 자원이라고 합니다. 각 자원은 URL로 식별됩니다.
  • 표현(Representation): 자원은 JSON, XML 등 다양한 형태로 표현됩니다.
  • 상태 전이(State Transfer): 클라이언트가 서버에서 자원을 요청하고, 서버는 응답으로 자원을 전송합니다. 이 과정을 상태 전이라고 합니다.

예를 들어, https://tistory.github.io/document-tistory-apis/apis/v1/post/list.htmlhttps://api.example.com/users는 글 목록을 나타내는 자원입니다. 클라이언트는 이 URL에 GET 요청을 보내 블로그 글 목록을 받을 수 있습니다.


3. Python의 requests 라이브러리 소개 및 설치

Python의 requests 라이브러리는 HTTP 요청을 간편하게 보낼 수 있도록 도와줍니다. 이 라이브러리를 사용하면, GET, POST, PUT, DELETE 요청을 손쉽게 처리할 수 있습니다.

설치 방법

jupyter notebook 환경에서 requests 라이브러리를 설치합니다.

앞장의 Notebook 생성하는 방법을 참고해서 '댓글로봇' 폴더에 HttpTest.ipynb라는 노트를 생성해서 진행했습니다.

!pip install requests


4. requests를 이용한 간단한 API 호출

이제 requests 라이브러리를 사용해 간단한 API 호출을 시도해보겠습니다. 예를 들어, 무료 JSON Placeholder API를 이용해 데이터를 가져오겠습니다.

 

먼저 가져올 글의 URL을 확인 합니다.

https://atomicdev.tistory.com/28

import requests # GET 요청 보내기 
response = requests.get('https://jsonplaceholder.typicode.com/posts/1') # 응답 상태 코드 확인 
print(f"Status Code: {response.status_code}") # 응답 데이터 출력 
data = response.json() # JSON 데이터를 Python 객체로 변환 
print(f"Title: {data['title']}") 
print(f"Body: {data['body']}")
TYPICODE.COM API 호출 예

코드 설명:

  • requests.get(): 주어진 URL에 GET 요청을 보냅니다.
  • response.status_code: 서버로부터의 응답 상태 코드를 확인합니다. (200이면 성공)
  • response.json(): 서버로부터 받은 JSON 데이터를 Python 객체로 변환합니다.

실행 결과로는 JSON Placeholder에서 제공하는 가상의 블로그 글 정보를 가져옵니다.


5. 실습: 무료 API를 이용해 데이터 받아오기 (예: 날씨 정보 API)

이제 무료 날씨 정보 API를 사용해 실제 데이터를 가져오는 실습을 해보겠습니다.

API 키 발급

먼저, 무료 날씨 정보 API 서비스인 OpenWeatherMap(https://openweathermap.org/)에 가입하고, API 키를 발급받아야 합니다.

회원가입
My API Keys
MY_FIRST_API_TEST 생성
이메일 확인을 해야 API 사용이 가능
이메일 확인 완료

* 이메일 확인 완료 후 API 호출시 오류가 발생하면 10분 정도 기다렸다가 다시 실행 합니다.

코드 작성

import requests 

# OpenWeatherMap API 키 (발급받은 API 키를 입력하세요) 
api_key = 'd759ce4d9044de4f3c7d00**********' 

# 요청할 도시 이름 
city = 'Seoul' 

# API 엔드포인트 URL 
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric' 

# GET 요청 보내기 
response = requests.get(url) 

# 응답 상태 코드 확인 
if response.status_code == 200:
  data = response.json()
  print(f"City: {data['name']}")
  print(f"Temperature: {data['main']['temp']}°C")
  print(f"Weather: {data['weather'][0]['description']}")
else:
    print("Failed to retrieve data")
현재 서울의 날씨 조회 결과

코드 설명:

  • url: API 키와 도시 이름을 포함한 API 엔드포인트 URL을 만듭니다.
  • units=metric: 섭씨 온도를 얻기 위해 사용합니다.
  • response.status_code: 서버로부터의 응답 상태 코드를 확인합니다.
  • response.json(): 응답 데이터를 JSON 형식으로 변환하여 출력합니다.

실행 결과로는 서울의 현재 날씨 정보를 가져올 수 있습니다.


이 강의를 통해 수강자는 HTTP와 API의 기본 개념을 이해하고, Python을 사용해 실제 API를 호출하여 데이터를 받아오는 실습을 완료하게 됩니다. 다음 강의에서는 티스토리 API를 사용하여 실제 블로그 데이터에 접근하는 방법을 배워보겠습니다.

728x90