api를 사용할 때, 간단한 정보의 경우 무료로 사용가능하기도 하지만, 데이터가 전문적이고, 양이 많을 경우 api를 유료로 제공하는 경우가 많다.
때문에 사용자의 권한을 파악하기위해 api제공자는 api키를 부여해 인증하여 키가 가진 권한만큼 데이터를 넘긴다.
openweathermap이라는 날씨데이터 api를 제공하는 사이트를 이용해보려한다.
Сurrent weather and forecast - OpenWeatherMap
Access current weather data for any location on Earth including over 200,000 cities! The data is frequently updated based on the global and local weather models, satellites, radars and a vast network of weather stations. how to obtain APIs (subscriptions w
openweathermap.org
해당 사이트에 가입해 상단의 api로 들어가자.
그리고 그 중 무료로 사용 가능한 현재 날씨 데이터의 API 문서에 들어갔다.
그럼 해당 api의 엔드 포인트와 필수, 선택 매개변수들에 대하여 알려준다.
그 중 appid라는 필수 매개변수가 있는데 이게 바로 api인증에 필요한 key이다.
매개변수쪽에 적힌 appid설명 중 주황색 글씨 부분을 클릭해 들어가보자.
그러면 이렇게 열쇠라 적힌 부분 밑에 api인증에 필요한 키 값이 적혀있다. 해당 내용을 복사하여 변수안에 저장하고, 필수 매개변수를 넣어 정보를 가져왔다.
그리고 status_code를 출력하여 문제없이 api데이터를 받았는지 확인했다.
key값은 각자 다르게 부여되니 따라해보는 경우 자신의 키 값을 넣기 바란다.
import requests
api_key = "229c0ba45be476a333e8799b9a1dd83f"
LATITUDE = 35.907757
LONGITUDE = 127.766922
parameter = {
"lat": LATITUDE,
"lon": LONGITUDE,
"appid": api_key
}
response = requests.get(url="https://api.openweathermap.org/data/2.5/forecast", params=parameter)
print(response.status_code)
- 출력값
200
200이 나온 것을 보아 정상적으로 데이터를 가져왔음을 알 수 있다.
지금은 무료로도 받을 수 있는 api데이터를 받아와 가능했다.
하지만 유로로만 받을 수 있는 api데이터를 가져오려하면 어떻게 될까?
api문서 중 유료로만 사용가능한 one call api를 사용해봤다.
필수 매개변수는 같으니 api 엔드포인트만 변경했다.
import requests
api_key = "229c0ba45be476a333e8799b9a1dd83f"
LATITUDE = 35.907757
LONGITUDE = 127.766922
parameter = {
"lat": LATITUDE,
"lon": LONGITUDE,
"appid": api_key
}
response = requests.get(url="https://api.openweathermap.org/data/3.0/onecall", params=parameter)
print(response.status_code)
- 출력값
401
우리가 가진 키가 무료만 호환 가능한 키기 때문에 401에러가 나며 데이터를 가져오지 못한 것을 볼 수 있다.
'파이썬' 카테고리의 다른 글
HTTP 헤더와 post, put, delete requests (0) | 2023.08.12 |
---|---|
파이썬 환경변수로 값 숨기기 (0) | 2023.08.10 |
파이썬 API 사용 (0) | 2023.08.08 |
파이썬으로 메일 발송 (0) | 2023.08.08 |
JSON(dump, load, update) (0) | 2023.08.04 |