관통 프로젝트
- 배우는 것 : 프로젝트 목표 , 이론, 실습 진행
- 하는 것 : 도전과제 진행
버젼선택은 일단 5주차까지는 선택가능
지난 기수는 8주차때 선택함
유튜브에서 하는 내용은 선택한 프로젝트랑 상관없이 다 들어야 한다.
⇒ 결국 맞닥뜨릴 문제이긴 때문
오늘 하는 것
- API 이해하기
- 날씨 데이터 수집
날씨 데이터를 모으기엔 어렵다 ⇒ 인터넷에 있는 데이터 가져오자
서버 , 클라이언트
서버 : 부탁을 받으면 처리해주거나, 부탁대로 원하는 값을 돌려주는 역할
클라이언트 : 부탁하는 역할
- 클라이언트가 → 서버 : 너가 가진 정보 줘
- 서버 → 클라이언트 : 원하는 정보 줄게
클라이언트가 네이버 주소 입력 : 네이버 메인화면을 줘 → 네이버 서버가 메인화면을 돌려준다.
⇒ 날씨 정보가 필요하니까 날씨 정보를 가지고 있는 서버에 날씨 정보를 요청한다
요청하는 두가지 방법
- 주소창에 주소(url)을 입력
- 서버에 정보를 요청하는 파이썬 코드를 작성한다.
Fake API
서버로 부터 데이터 요청 보내야 함
실제로 정상적인지 판단
--> 보안에 위협되는지 판단
출력
원하는 형태의 데이터 변환
=> 이 일련의 과정을 줄이기 위해 쓰는 것 : 라이브러리
데이터를 가져오는 python 라이브러리 : requests
파이썬 패키지 관리 : pip
pip install <패키지 이름>
pip list : 현재 사용중인 파이선 패키지 확인 가능
내 코드에 다른 패키지를 추가
import requests
컴퓨터가 입력되 있는 함수 등을 찾는 로직
- 내 파일 검색
- 내장 모듈 모아둔 곳 검색
⇒ import를 통해 검색 가능하도록 만듬
데이터 가져오기
url = 'https://fakestoreapi.com/carts'
data = requests.get(url).json()
# requests 모듈을 사용해서 해당 url으로부터 데이터를 가져오겠다.
print(data)
data - requests.get(url)
print(data) # 만 출력
서버는 어떻게 요청을 해석하고 데이터를 반환할 까?
클라이언트들은 각자 다른 방식으로 요청을 보내는데 어떻게?
ex) 크롬방식, 파이썬 방식
⇒ API
API
클라이언트가 원하는 기능을 수행하기 위해서 서버 측에 만들어 놓은 프로그램
- 기능 예시 : 데이터 저장, 조회, 수정, 삭제 등등
서버 측에 특정 주소로 요청이 오면 정해진 기능을 수행하는 API르 미리 만들어 둡니다.
- 클라이언트는 서버가 미리 만들어 놓은 주소로 요청을 보냅니다.

날씨 정보를 제공하는 API
어떤 것을 찾아야 할까? 2가지
날씨 정보를 가지고 있는 서버 및 해당 서버가 제공하는 API
오픈 API
외부에서 사용할 수 있도록 무료로 개방(open)된 API
사용법은 공식 문서(Docs)에 명시되있음
프로젝트에서 사용되는 API
- OpenWeatherMap API : 기상 데이터
- 금융상품통합비교공시 API : 금융 상품 정보
오픈 API 특징 및 주의사항
- 영어로 된 것이 많다.
- 위험성, 왜? 오픈으로 했냐 같은 내용은 공식문서에 있음
- 악성 사용자가 100만 개의 계정을 생성해 요청을 하면?
- 너무 많은 계정에서 동시에 요청을 보내면 서버가 견디지 못합니다
- 이러한 문제점을 해결하기 위해 오픈 API 는 API KEY 를 활용하여 사용자를 확인합니다.
- 사용자 인증 혹은 회원가입 ⇒서버에서 API KEY 발급
- 서버에 요청할 때 마다 해당 API KEY를 함께 보내 정상적인 사용자인 것을 확인 받습니다.
- API KEY를 가지고 있는 악성 사용자가 1초에 100만 개의 요청?
- 서버가 견디지 못하여 정상적인 서비스 불가능
- 대다수 오픈 API는 사용량이 제한되어 있습니다.
- 공식 문서의 일일 및 월 간 사용량 제한을 반드시 확인하여야 합니다.
- [주의] 사용량이 초과될 경우 요금이 청구될 수 있습니다.
JSON
API 가 반환하는 데이터는 어떻게 생겼을까?

- JavaScript Object Notation 의 약자. 자바스크립트 객체 표기법
- 어느 정도 형식이 있어야 데이터를 주고 받는데 문제 없음
- 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 텍스트 기반의 데이터 형식
- 통신 방법이나 프로그래밍 문법이 아니라 데이터를 표현하는 표현 방법 중 하나
- 특징
- 데이터는 중괄호
{}
(언어로 별개)로 둘러싸인 키-값 쌍의 집합으로 표현됨 - 키 = 문자열/ 값 = 다양한 데이터 유형을 가질 수 있다.
- 값은 쉼표
,
로 구분됨
- 데이터는 중괄호
용어
파싱(Parsing) : 데이터를 의미 있는 구조로 분석하고 해석하는 과정
json.loads()
: JSON 형식의 문자열을 파싱하여 python Dictionary 로 변환
실습
Openweathermap API
- 기상 데이터 오픈 api
- API 사용량 제한
- 60 calls/minute
- 1_000_000 calls/month
- API - Current & Forecast weather data collection - Current Weather Data - API doc 를 통해 가이드 확인 - How to make an API call 을 확인
import requests
import pprint
api_key = 'apikey 입력'
lat = 36.10
lon = 128.41
url = f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={api_key}'
data = requests.get(url).json()
# data = requests.get(url)
#날씨 요약 정보 : 서울 기준 'clear sky'가 출력되도록 해보자
pprint.pprint(data)
pprint.pprint(data['weather'][0]['description'])
Q&A
금융 어플리케이션
데이터는 가져오지만, 서비스는 진행하지않는다.
'TIl' 카테고리의 다른 글
Weekly 일, 파이썬 복습 (1) | 2024.01.21 |
---|---|
파이썬 1주차 Weekly 토 (0) | 2024.01.20 |
모듈, 제어문 (0) | 2024.01.18 |
함수, 재귀 함수, Packing (0) | 2024.01.17 |
01.16 Collection, 형변환, 연산자 (0) | 2024.01.16 |