Back End/Flask
RestApi - 파이썬으로 OpenApi 데이터 통신 하는 방법
luvris2
2022. 8. 12. 10:53
반응형
이 포스팅은 파이썬 언어를 기준으로 작성되었습니다.
해당 소스 코드는 RestApi의 기본 app이 구동되어있다는 전제하에서 진행하였습니다.
RestApi의 기본 구성 및 자세한 설명을 원하면 아래의 포스팅을 확인해주세요.
- RestApi 설치 및 기본 구성 : https://luvris2.tistory.com/180?category=1064805
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
- 요청 결과
반응형