RestApi - 파이썬으로 OpenApi 데이터 통신 하는 방법

반응형

 

이 포스팅은 파이썬 언어를 기준으로 작성되었습니다.

해당 소스 코드는 RestApi의 기본 app이 구동되어있다는 전제하에서 진행하였습니다.

RestApi의 기본 구성 및 자세한 설명을 원하면 아래의 포스팅을 확인해주세요.

 

 

API서버 - Hello World 출력하기 (Flask)

API 서버에 Hello World 출력하기 필요 라이브러리 설치 pip install flask flask-restful 소스 코드 (app.py) @app.route('/', methods=['GET'] route('/') : 해당 경로로 이동하여 methods의 기능을 수행 route..

luvris2.tistory.com


OpenApi 통신하기

(제가 사용 할 API는 KOPIS에서 제공하는 공연 목록을 보는 OpenApi입니다.)

  • 사용하는 OpenApi에서 요구하는 메소드와 필수 파라미터를 확인
    • 메소드 : GET
    • 필수 파라미터 : service, stdate, eddate, cpage, rows

 

  • 메소드와 필수 파라미터 설정
    • params(@Query)로 데이터를 입력
# 파라미터로 검색 조건 받기
stdate = request.args['stdate'] # 공연시작일자, 6자로 입력받기 ex) 20220701
eddate = request.args['eddate'] # 공연종료일자, 6자로 입력받기 ex) 20220801
cpage = request.args['cpage'] # 현재 페이지, 정수형으로 입력
rows = request.args['rows'] # 페이지당 목록 수, 정수형으로 입력

# 파라미터에 들어갈 정보
params = {
    "service" : Config.KOPIS_ACCESS_KEY,
    "stdate" : stdate,
    "eddate" : eddate,
    "cpage" : cpage,
    "rows" : rows
}

 

  • API 요청
# 요청하는 API의 URL과 API에서 요구하는 데이터 입력
# params = {service, stdate, eddate, cpage, rows}
response = requests.get(Config.KOPIS_BASE_URL, params=params)

 

  • 전체 소스 코드

메인 실행 파일 (app.py)

from flask import Flask
from config import Config
from flask_restful import Api
from resources.kopisApi import KopisApiResource

app = Flask(__name__)

# 환경변수 세팅
app.config.from_object(Config)

api = Api(app)

# 경로와 resource(API코드)를 연결
# 공연 목록 조회 API
api.add_resource(KopisApiResource, '/performancesearch')

 

추가 리소스 파일 (KopisApiResource.py)

class KopisApiResource(Resource):
    def get(self) :

        # 파라미터로 검색 조건 받기
        stdate = request.args['stdate'] # 공연시작일자, 6자로 입력받기 ex) 20220701
        eddate = request.args['eddate'] # 공연종료일자, 6자로 입력받기 ex) 20220801
        cpage = request.args['cpage'] # 현재 페이지, 정수형으로 입력
        rows = request.args['rows'] # 페이지당 목록 수, 정수형으로 입력

        # 파라미터에 들어갈 정보
        params = {
            "service" : Config.KOPIS_ACCESS_KEY,
            "stdate" : stdate,
            "eddate" : eddate,
            "cpage" : cpage,
            "rows" : rows
        }

        # 데이터를 보낼 URL, 데이터, API키가 담긴 헤더 정보
        response = requests.get(Config.KOPIS_BASE_URL, params=params)
        
    	return { "resultList" : response.text }, 200

 

  • 요청 결과

반응형