본문 바로가기

TIl

관통 PJT 1

관통 프로젝트

  1. 배우는 것 : 프로젝트 목표 , 이론, 실습 진행
  2. 하는 것 : 도전과제 진행

버젼선택은 일단 5주차까지는 선택가능

지난 기수는 8주차때 선택함

유튜브에서 하는 내용은 선택한 프로젝트랑 상관없이 다 들어야 한다.

⇒ 결국 맞닥뜨릴 문제이긴 때문

오늘 하는 것

  1. API 이해하기
  2. 날씨 데이터 수집

날씨 데이터를 모으기엔 어렵다 ⇒ 인터넷에 있는 데이터 가져오자

서버 , 클라이언트

서버 : 부탁을 받으면 처리해주거나, 부탁대로 원하는 값을 돌려주는 역할

클라이언트 : 부탁하는 역할

  • 클라이언트가 → 서버 : 너가 가진 정보 줘
  • 서버 → 클라이언트 : 원하는 정보 줄게

클라이언트가 네이버 주소 입력 : 네이버 메인화면을 줘 → 네이버 서버가 메인화면을 돌려준다.

⇒ 날씨 정보가 필요하니까 날씨 정보를 가지고 있는 서버에 날씨 정보를 요청한다

요청하는 두가지 방법

  1. 주소창에 주소(url)을 입력
  2. 서버에 정보를 요청하는 파이썬 코드를 작성한다.

Fake API

서버로 부터 데이터 요청 보내야 함
실제로 정상적인지 판단
--> 보안에 위협되는지 판단
출력
원하는 형태의 데이터 변환
=> 이 일련의 과정을 줄이기 위해 쓰는 것 : 라이브러리
데이터를 가져오는 python 라이브러리 : requests

파이썬 패키지 관리 : pip

pip install <패키지 이름>
pip list : 현재 사용중인 파이선 패키지 확인 가능

내 코드에 다른 패키지를 추가

import requests

컴퓨터가 입력되 있는 함수 등을 찾는 로직

  1. 내 파일 검색
  2. 내장 모듈 모아둔 곳 검색

⇒ 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 특징 및 주의사항

  1. 영어로 된 것이 많다.
  2. 위험성, 왜? 오픈으로 했냐 같은 내용은 공식문서에 있음
  3. 악성 사용자가 100만 개의 계정을 생성해 요청을 하면?
    1. 너무 많은 계정에서 동시에 요청을 보내면 서버가 견디지 못합니다
  4. 이러한 문제점을 해결하기 위해 오픈 API 는 API KEY 를 활용하여 사용자를 확인합니다.
    1. 사용자 인증 혹은 회원가입 ⇒서버에서 API KEY 발급
    2. 서버에 요청할 때 마다 해당 API KEY를 함께 보내 정상적인 사용자인 것을 확인 받습니다.
  5. API KEY를 가지고 있는 악성 사용자가 1초에 100만 개의 요청?
    1. 서버가 견디지 못하여 정상적인 서비스 불가능
  6. 대다수 오픈 API는 사용량이 제한되어 있습니다.
    1. 공식 문서의 일일 및 월 간 사용량 제한을 반드시 확인하여야 합니다.
    2. [주의] 사용량이 초과될 경우 요금이 청구될 수 있습니다.

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