API (Application Programming Interface) 는 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
요청을 보내는 애플리케이션을 클라이언트, 응답을 보내는 애플리케이션을 서버라고 함
예를 들어, 기상청의 날씨 데이터베이스는 서버이고 모바일앱은 클라이언트 이다.
Python 용 HTTP 라이브러리, requests 를 사용하면 HTTP 요청을 쉽게 보낼 수 있다.
- 웹사이트를 읽어오기 위해 사용 함
- HTTP 요청 method : 대표적으로
GET
/POST
method | URL |
---|---|
GET | Query String |
POST | Form Data |
HTTP 요청할 사이트에서 오른쪽 마우스 클릭 > 검사(Inspection) > Network > Request Headers > method 확인
GET
이다.POST
이다.응용 프로그램 프로그래밍 인터페이스 json은 javascript object notation의 줄임말로, 데이터를 주고 받을 때 사용하는 포맷이다.
json.loads(str)
→json type
으로 변경하여 데이터 통 안에 넣어준다.- 아래 사진과 같이
dictionary
형태로 데이터를 받아온다.
import requests
import json
city = "Seoul"
apikey = ############################
lang = "kr"
# 요청하기 위한 서버 주소, units=metric (섭씨온도로 변경)
api = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={apikey}&lang={lang}&units=metric" # 요청하기 위한 서버 주소
# 받아온 데이터는 문자열 형태
result = requests.get(api)
type(result.text)
# Json 형태로 받아오기
data = json.loads(result.text)
type(data)
print(data["name"],"의 날씨입니다.")
print("날씨는 ", data["weather"][0]["description"],"입니다.")
print("현재 온도는 ", data["main"]["temp"],"입니다.")
print("하지만 체감 온도는 ", data["main"]["feels_like"],"입니다.")
print("최저 기온은 ",data["main"]["temp_min"],"입니다.")
print("최고 기온은 ",data["main"]["temp_max"],"입니다.")
print("습도는 ",data["main"]["humidity"],"입니다.")
print("기압은 ",data["main"]["pressure"],"입니다.")
print("풍향은 ",data["wind"]["deg"],"입니다.")
print("풍속은 ",data["wind"]["speed"],"입니다.")
Seoul 의 날씨입니다.
날씨는 맑음 입니다.
현재 온도는 7.08 입니다.
하지만 체감 온도는 5.74 °C 입니다.
최저 기온은 5.66 °C 입니다.
최고 기온은 9.69 °C 입니다.
습도는 61 % 입니다.
기압은 1023 hPa 입니다.
풍향은 320 N 입니다.
풍속은 2.06 m/s입니다.
aws 공식 문서 : API란 무엇입니까?
Requests 공식 문서
OpenWeather : 날씨 API 요청 사이트