갬미의 성장일기
Day16 - Flask | 공공 API 사용하기 본문
오늘 배운 내용
- Flask
- 공공 데이터 포털에서 open api 사용하기
웹 동작 구성
Flask = 마이크로 웹 프레임워크
👇 공식 docs
openAPI 사용하기
-> 코로나 검색 / open api에서 json 형식인것 중 다음을 사용함
https://www.data.go.kr/data/15077586/openapi.do
활용신청하면 마이페이지에서 승인 현황을 볼 수 있다 -> 대부분 바로 승인이 나니 활용할 수 있음
인증키 설정을 눌러 인코딩 키를 위에, 디코딩 키를 아래에 적는다
test용이기 때문에 이렇게 한다
불러올 API 정보를 입력한다
page - 시작 페이지
perpage - 몇개를 보일것인지
cond - 의료기관이 속한 주소지 (구)
Request url => 데이터 요청할 url 이를 &단위로 쪼개어 보면 정보가 보인다
기본 url
http://api.odcloud.kr/api/apnmOrg/v1/list?
page=1&perPage=10 # 페이지
cond (지역구 코드)
&cond%5BorgZipaddr%3A%3ALIKE%5D=%EA%B0%95%EB%82%A8%EA%B5%AC # 강남구 코드
일반 인증키
&serviceKey=%2FH2rHG%2FJ95hTADJiUQJ4QzpBbdHCE4CBYf7V6AjSaiNSKM7uePItX0GmBO3vrJL7Q5JHigKGc0%2FXId%2B3S2m0dQ%3D%3D
이 네개를 합치면 request url이 된다
Flask에서 open api 정보 받아오기
from flask import Flask
import json
import requests
# 변수선언 - 프로그램의 이름 저장한느 변수 (파일이름 저장 변수)
# application server 개발 app 변수를 많이 사용
app = Flask(__name__) # flask 프로그램 시작 기본값 = app.py 파일을 생성
# 함수선언
# 시작할때 경로(route) 선언해야함
@app.route("/") # 웹 사이트 경로를 저장
def FlaskLab():
return 'flask 데이터 응답'
@app.route("/data1")
def FlaskData():#startPage, pageCount, address): # 요청받음
keyValue = r'%2FH2rHG%2FJ95hTADJiUQJ4QzpBbdHCE4CBYf7V6AjSaiNSKM7uePItX0GmBO3vrJL7Q5JHigKGc0%2FXId%2B3S2m0dQ%3D%3D'
# url 만들기
# http://api.odcloud.kr/api/apnmOrg/v1/list?
# page=1&perPage=10
# &cond%5BorgZipaddr%3A%3ALIKE%5D=%EA%B0%95%EB%82%A8%EA%B5%AC
# &serviceKey=%2FH2rHG%2FJ95hTADJiUQJ4QzpBbdHCE4CBYf7V6AjSaiNSKM7uePItX0GmBO3vrJL7Q5JHigKGc0%2FXId%2B3S2m0dQ%3D%3D
dataURL = 'https://api.odcloud.kr/api/apnmOrg/v1/list?'
dataURL += 'page='+str(1) + '&perPage=' + str(10)
dataURL += '&cond' + r'%5BorgZipaddr%3A%3ALIKE%5D=%EA%B0%95%EB%82%A8%EA%B5%AC' # 지역
dataURL += '&serviceKey=' + keyValue
dataResult = requests.get(dataURL)
data = json.loads(dataResult.text)['data']
return str(data) # 공공데이터 결과값 응답
@app.route -> web 주소
그 아래 주소 -> route 주소에서 실행할 함수
@app.route(data1/)
tartpage, pageCount, address 입력 받아 사용하려 했으나 그건 내일 하기로함
기본 ip/data1 하면 서울시 강남구의 백신 사전예약 의료기관 api정보가 호출
접속했을때 Response Code 오류
200번대 오류 -> 정상 작동
400번대 오류 -> 주소 이상
500번대 오류 -> 서버 이상
오늘의 회고
- 과제가 병원정보를 띄우는거라 급하게 str로 처리했는데 이게 맞는지 모르겠다
- json으로 출력하려니 오류가 나서 ,, loads 대신 dumps를 사용하는 코드를 구현하기는 했다
- Flask를 배워봤는데 장고보다 간단하게 실행되는것 같다 (조금 배워서 그런거 일수도,,^^)
- 오늘 pip install하면 라이브러리가 내가 잡아놓은 Strips 폴더에 안깔리고 엄한데에 자꾸 깔려서 왜 이러나 보다가 수업을 조금 놓쳤다 ,, 그냥 Script 환경변수를 다시 잡아줬는데 원인을 아직도 모르겠다
- 내일부터는 Cloud 에 대해 배운다고 하셨다,, 떨린다
- 최종 목표는 AWS 서버에 Flask로 만든 웹을 올리고 코로나 백신 예약 병원 정보를 지도에 띄우는 서비스를 하는것!!
'Cloud > Cloud 공부일기' 카테고리의 다른 글
Day18 - 네트워크 기초 | 3 tier 인프라 환경 구축하기 (0) | 2022.01.26 |
---|---|
Day17 - 클라우드 기초 (0) | 2022.01.25 |
Day15 - VScode 디버깅 구성추가 | 파일 읽고쓰기, 예외처리 (python) (2) | 2022.01.21 |
Day14 - Django (0) | 2022.01.20 |
Day13 - Python 주요 자료구조 (0) | 2022.01.20 |
Comments