이 글은 API가 무엇인지를 잘 모르는 분들을 위해 이해를 목적으로 쓰였습니다.
프로그래밍을 하다 보면 API란 단어를 참 많이 듣게 됩니다. 먼저 위키백과에서 뭐라고 정의하는지를 살펴볼게요.
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
네, 저도 무슨 말인지 잘 모르겠으니까 어떻게 사용되고 있는지를 보면서 정의를 느낌으로 이해해보는 방향으로 설명해볼게요.
먼저 쉽게 이해할 수 있는 API 하나를 살펴볼게요. 날씨입니다.
위 웹사이트는 API를 오픈해서 세계 날씨를 확인할 수 있는 곳입니다. 현재 날씨가 어떤지, 그동안 어땠었는지 알 수 있는데 어떻게 알 수 있는지는 아래와 같습니다.
api.openweathermap.org/data/2.5/weather?q={city name}&appid={your api key}
위의 주소를 URL로 입력하면 날씨에 대한 데이터를 주는 방식입니다. 주소 내용 중에 {city name}에는 London 또는 Seoul 같은 도시의 이름이 들어가고 {your api key}에는 회원가입을 하면 무료로 주는 랜덤 문자열인 key값이 있습니다. 만약 현재 서울의 날씨를 확인하고 싶고 나의 app key가 "deOxndvhO201sAW" (임의로 대충 쳐봤습니다. 해봐도 소용없어요.)라고 한다면 주소가 아래 형식이 되겠죠?
api.openweathermap.org/data/2.5/weather?q=Seoul&appid=deOxndvhO201sAW
자 주소가 완성되었습니다. 위에 주소를 입력을 하면 아래처럼 텍스트로 된 데이터를 던져줘요. JSON형식이라고 하죠.
{
"coord": {
"lon": 126.98,
"lat": 37.57
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01n"
}
],
"base": "stations",
"main": {
"temp": 302.25,
"feels_like": 306.05,
"temp_min": 301.15,
"temp_max": 303.15,
"pressure": 1005,
"humidity": 70
},
"visibility": 10000,
"wind": {
"speed": 2.11,
"deg": 16
},
"clouds": {
"all": 1
},
"dt": 1598359440,
"sys": {
"type": 1,
"id": 8117,
"country": "KR",
"sunrise": 1598302594,
"sunset": 1598350333
},
"timezone": 32400,
"id": 1835848,
"name": "Seoul",
"cod": 200
}
뭔가 길고 복잡한 것 같지만 대충 보면, 날씨는 Clear 하고 온도는 어떻고 하는 내용이 쭉 나열되어 있어요. 정말 자세한 정보를 간단한 방법으로 지속적으로 얻을 수 있다니 이 API만 가지고 있어도 본인이 필요한 방식으로 요리를 한다면 정말 유용하게 사용할 수 있을 것 같지 않나요?
이제 대략적으로 감을 잡으셨나요? 위 정의를 다시 한번 확인해볼까요?
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
우리는 URL 방식으로 https://openweathermap.org/ 라는 웹사이트에서 날씨 정보를 제공받았습니다. 이 정보를 우리가 만든 웹사이트나 응용프로그램에서 돌린다면 우리는 "API를 이용했다!"라고 할 수 있는 것입니다. 간단하죠?
이렇게 외부의 응용프로그램이나 웹사이트의 기능을 통해 무어인가를 받는 것도 API의 종류이고, 나의 웹사이트의 경우 Front-End와 Back-End의 데이터 교환도 API 방식으로 만들 수 있고, 그것도 API라고 부를 수 있습니다. 또 누구나 쓸 수 있게 오픈되어 있는 API가 있는 반면에 접근을 제한해 놓은 API도 많죠. 그런 것들은 신청하고 승인을 받고 사용하게 됩니다.
어떤가요? API에 대한 감을 잡는 정도가 되었으면 좋겠습니다. 감을 잡는데 너무 장황하게 설명을 한 게 아닌가 싶기도 하네요. 팁을 하나 드리자면 나라에서도 공공정보에 대한 데이터를 API를 통해 제공하고 있는데 어떤 내용이 있는지 대충 살펴보시면 본인에게 필요한 데이터를 찾을 수 있을지도 모르겠네요.
오늘의 API 설명은 여기까지입니다. 코로나가 유행 중인데 모두 몸조심하시기를!