티스토리 뷰
API (Application Programming Interface)
API는 서버와 네트워킹을 하기 위한 계약/룰이라고 할 수 있는데요.
우리가 특정 방식으로 요청을 하면 서버가 그에 맞는 데이터를 우리에게 전달해줘요.
그 요청 방식에 대한 약속이 API입니다.
요청 방식은 쿼리 파라미터를 이용하는데요.
내가 원하는 정보의 파라미터를 사용하여 데이터를 요청해요.
예시로 무료로 API를 제공하는 Open Weather 사이트를 봤을 때 파라미터에 대한 설명이 있는 걸 알 수 있어요.
아래에서 q와 appid는 'required'라고 보이져? 그건 반드시 적어줘야 하는 파라미터 입니당.
그 외 여러가지 (mode, units 등) 파라미터가 있고, 내가 필요한 파라미터를 정해 요청을 하면 됩니다.
우리가 저 형식에 맞게 데이터를 요청하게 되면 이제 JSON 형태로 우리에게 데이터가 전송되는데요!
그러면 JSON 데이터는 또 뭐냐!!
JSON (JavaScript Object Notation)
자바스크립트에서 데이터를 저장하는 방식입니당.
키-값의 쌍으로 구성되어 있기 때문에 키(key)를 통해서 값(value)를 검색할 수 있져. (Dictionary 처럼)
JSON 형태로 저장하면 용량도 작을 뿐만 아니라 다양한 방식으로 변환이나 응용이 가능하기 때문에 아주 유용하지만, 그 형식을 지키지 않으면 오류가 발생할 수 있다는 단점이 있어요.
정확한 형식(API)에 맞춰 데이터를 요청(request)하면 JSON 형태로 응답이(response) 와요.
그러면 필요한 형식(struct, class)에 맞춰 JSON 데이터를 변형해서 사용하면 된답니다!
옥께이?!!
오홍ㅎㅎㅎ 정리하자면, API에 따라 요청한 데이터를 JSON 형태로 받아온다는건데,
도대체 어떻게 요청하는데여!!?
openweather라는 오픈API 사이트에 우리가 원하는 데이터를 요청해보도록 할게요.
https://openweathermap.org/
С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를 받아올 수 있어요!
일단 가입을 한 후 계정을 누르시면 'My API Keys'가 있는데, 이 키를 발급 받아야 해요!!
그 후에는 API(주황색 박스)를 누르신 후 'Current Weather Data'의 API doc 보기를 눌러주세욧!
한 장소에 대한 현재 날씨 데이터를 불러오게 되는데, 도시 이름으로 불러올 수도 있고, 도시 ID로 불러올 수도 있고, 여러가지 방법으로 불러올 수가 있어요.
저는 가장 간단하게 도시 이름 (by city name)을 이용할게요.
요청 방법을 전부 알려줘요.
아래처럼 말이져.
api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
'?' 뒤에 내가 원하는 파라미터를 넣어주면 되는데요.
아까 위에서 파라미터 q와 appid는 'required'라고 했죠?
1. q={city name}
q={city name} 에서 {city name}에 내가 원하는 도시 이름을 넣어주면 됩니당. q=seoul 처럼 말이져!
그리고 다음 파라미터를 연결할 때는 '&' 기호를 사용해주면 돼요. 쉽쥬?
2. appid={API key}
내가 발급받은 키를 {API key}에 넣어주면 됩니당
각자의 키가 다르기 때문에 본인의 키를 넣어주세요!
이 파라미터들은 순서가 바뀌어도 상관없어요!
무슨 말이냐면! 아래처럼 API Key를 먼저 넣고, city name을 넣어도 결과는 같습니당!
api.openweathermap.org/data/2.5/weather?appid={API key}&q={city name}
그럼 이 형식에 맞춰 쓴 url을 웹 창에 넣어볼까나욧
쨔잔! 이게 바로 JSON 형식의 데이터를 요청한 거랍니다.
(ㅜㅜ 자꾸 티스토리 오류 때문에 코드들이 한 줄로 붙어 있어요 ㅠㅠ!!! 그래서 다시 수정하느라 온도가 달라요 ㅠㅠ)
그런데, main->temp를 보면 온도같은데, 우리가 아는 온도랑 좀 다르져?
이 오픈웨더 온도의 default 값이 바로 kelvin 온도이기 때문인데, kelvin 온도? 잘은 모르지만, 네이버에서는 절대적인 온도라고 하네요.
우리는 이게 필요한 게 아니라 섭씨의 온도가 필요하져?
다시 오픈웨더 사이트를 보면, 섭씨의 온도를 받기 위해서는 units=metric이라는 파라미터를 사용하면 된다고 하네여!
api에 units=metric을 추가해서 다시 JSON 데이터를 받으면?
(이것 또한 순서가 상관없겠져?!)
(ㅜㅜ 자꾸 티스토리 오류 때문에 코드들이 한 줄로 붙어 있어요 ㅠㅠ!!! 그래서 다시 수정하느라 온도가 달라요 ㅠㅠ)
이렇게 됩니다!!
너무나리 간단하져?! (사실 어려웠음,,)
오늘도 엄청나게 길어졌지만, 이제 겨우 데이터를 요청했을 뿐이에여,,,
늙어갈수록 왜 때문에 말이 길어지나여?
다음 편에는 우리가 요청한 데이터를 받아오는 URLSession에 대해 알아보도록 할게요ㅎㅎㅎ
그럼 오늘도 틀린 부분은 알려주십셔! 슨배님덜!
'iOS 개발자 되기' 카테고리의 다른 글
[swift] Alamofire 걸음마 (CocoaPods, pod 설치) (0) | 2022.01.22 |
---|---|
[swift] 왕기초적인 API 받아오기 2 (JSON Parsing) (1) | 2022.01.16 |
[swift] 왕기초적인 API 받아오기 3 (URLSession) (0) | 2022.01.16 |
[swift] stepper 및 alertController 연습하기 3-2 (in Code) (0) | 2021.12.04 |
[swift] stepper 및 alertController 연습하기 3-1 (in Code) (0) | 2021.12.01 |
- Total
- Today
- Yesterday