[python] Flask-RESTful에서 외부 데이터 API 연동 방법

Flask-RESTful은 Python에서 웹 애플리케이션을 개발하는 데 사용되는 프레임워크입니다. 이 프레임워크를 사용하면 간편한 RESTful API를 구축할 수 있습니다. 이 글에서는 Flask-RESTful을 사용하여 외부 데이터 API를 어떻게 연동하는지 알아보겠습니다.

외부 데이터 API 설정하기

먼저 Flask-RESTful 프로젝트를 생성한 후, 외부 데이터 API와 연동하기 위해 필요한 패키지를 설치해야 합니다. 예를 들어, requests 패키지를 사용하여 API 요청을 보내고 응답을 받습니다. 다음 명령을 사용하여 requests 패키지를 설치합니다:

pip install requests

API 요청 보내기

이제 외부 데이터 API와 연동하기 위해 API 요청을 보내는 방법을 알아보겠습니다. 예를 들어, 공개적으로 사용 가능한 날씨 API를 사용하여 날씨 정보를 가져오는 코드를 작성해보겠습니다:

from flask_restful import Resource
import requests

class WeatherResource(Resource):
    def get(self, city):
        # API 요청을 보낼 URL
        url = f"https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q={city}"

        try:
            # API 요청 보내기
            response = requests.get(url)
            response_json = response.json()

            # 응답 처리
            weather = response_json['current']['temp_c']
            return {'weather': weather}, 200

        except requests.exceptions.RequestException as error:
            return {'message': str(error)}, 500

위의 코드에서 WeatherResource 클래스의 get 메서드는 city 매개변수를 받아 해당 도시의 날씨 정보를 가져옵니다. requests 패키지를 사용하여 API 요청을 보내고, 응답을 json 형식으로 변환한 후 필요한 데이터를 추출합니다. 그리고 추출한 데이터를 JSON 형식으로 반환합니다.

API 연동 및 테스트하기

Flask-RESTful 프로젝트에 위에서 작성한 WeatherResource를 등록하여 API 연동을 완료할 수 있습니다. 다음과 같이 Flask-RESTful의 Api 클래스를 사용하여 API를 등록하는 코드를 작성합니다:

from flask import Flask
from flask_restful import Api

app = Flask(__name__)
api = Api(app)

api.add_resource(WeatherResource, '/weather/<string:city>')

if __name__ == '__main__':
    app.run(debug=True)

위의 코드에서 /weather/<string:city>는 API의 엔드포인트이며, city는 도시 이름을 나타내는 변수입니다. 예를 들어, http://localhost:5000/weather/seoul로 요청을 보내면 서울의 날씨 정보가 반환됩니다.

이제 Flask 애플리케이션을 실행하고 API를 테스트하여 외부 데이터 API와의 연동이 정상적으로 작동하는지 확인할 수 있습니다.

마무리

Flask-RESTful을 사용하여 외부 데이터 API를 연동하는 방법을 살펴보았습니다. 위의 예제에서는 날씨 API를 사용했지만, 다른 외부 API와도 동일한 방식으로 연동할 수 있습니다. Flask-RESTful은 간단하고 효율적인 방법으로 RESTful API를 개발할 수 있는 훌륭한 도구입니다.