API는 클라이언트가 서버로부터 데이터를 요청할 때 사용되는 요청양식이다.
우리가 버거킹에서 내가 오늘 먹을 점심을 주문한다고 가정해보자. 우리가 버거킹에 들어가서 주문을 받는 종업원에게 '와퍼주니어 세트를 하나 주세요'라고 말을 하면 종업원은 주방에 이 요청을 전달한다. 그러면 주방은 요청에 따라 빵, 패티, 양상추, 치즈, 마요네즈로 구성되어 있는 햄버거와 소금이 뿌려져 있는 감자 튀김, 그리고 콜라나 사이다를 조리해서 이를 내준다. 이를 자세히 생각해보면 우리는 종업원에게 '와퍼주니어 세트를 하나 주세요'라는 요청 하나로 주방에 있는 수많은 음식 재료들 중에 내가 원하는 재료 들을 내가 원하는 특정한 방식으로 요리하고 조합해서 전달이 되도록 할 수 있었다. 만약 이렇게 주문을 받는 종업원과 내가 원하는 방식을 고를 수 있는 메뉴가 없었으면 우리는 주문을 할때마다 주방에 가서 '빵 사이에 고기 패티 한장, 양상추 1장, 치즈 1장 마요네즈 10g를 넣은 것과 감자튀김 20조각, 그리고 사이다 250ml 주세요'라고 주문을 해야 될 것이다.
여기서 메뉴와 우리의 요청사항을 주방에 전달하는 종업원이 프로그래밍에서 이야기하는 API이다. API는 내가 원하는 데이터(빵 사이에 고기 패티 한장, 양상추 1장, 치즈 1장, 마요네즈 10g을 넣은 햄버거와 감자튀김 20조각, 그리고 사이다 250ml)를 데이터를 저장하고 있는 서버(수많은 식재료를 보유하고 있는 주방)에 요청하기 위해 사용되는 정해 놓은 양식이다.
내가 만들고자 하는 앱에 지도가 필요하다고 해보자. 지도의 기능을 하는 프로그램을 우리가 일일히 처음부터 다 만드는 것은 시간이 많이 들고 비효율적이다. 그냥 구글이나 네이버 같은 곳에서 만들어 놓은 것을 가져다 쓰는 것이 훨씬 효율적이다. 이때 우리가 구글에서 만든 지도를 갖고 오고 싶으면 우리는 구글이 만든 API를 사용해야되고 네이버에서 만든 지도를 갖고 오고 싶으면 네이버에서 만든 API를 사용해야 된다. 마치 버거킹에서는 '와퍼주니어 세트를 주세요'라는 요청 방식 있다고 한다면 맥도날드에서는 '빅맥 세트를 주세요'라는 요청 방식이 있는 것과 같다.