API 연결하라는데, 뭘 어디에 꽂는 거임?
안맵다떡볶이 메뉴를 주문 앱에서도 보여주고 싶습니다.
가격을 바꿀 때마다 메뉴판을 캡처해서 보내는 것도 일입니다. 떡볶이는 끓이면 되는데, 가격표는 왜 제가 계속 배달해야 하죠.
앱을 만드는 사람이 말했습니다.
“메뉴 API를 연결하면 됩니다.”
나: 연결이요? 무슨 선이 필요한데요?
API라는 구멍은 노트북 어디에도 없었습니다.
선 꽂는 연결이 아니었음
API는 다른 프로그램이 기능이나 정보를 이용할 수 있도록 마련한 접점과 사용 규칙입니다. 프로그램용 창구라고 생각하면 쉽습니다.
사람은 홈페이지에서 메뉴판을 보고 버튼을 누릅니다. 프로그램도 다른 서비스의 메뉴 정보를 쓰고 싶다면, 그 서비스가 마련한 방법을 따라야 합니다.
안맵다떡볶이가 “이 방법으로 요청하면 메뉴 이름과 가격을 알려줄게요”라고 열어둔 창구가 있다고 해봅시다.
주문 앱은 그 방법에 맞춰 메뉴 정보를 요청할 수 있습니다. 여기서 말한 ‘연결’은 그 요청을 보내고, 받은 결과를 앱에서 쓰도록 만드는 것이었습니다.
선 하나를 구해오는 작업이 아니라 프로그램이 이용 방법을 맞추는 작업이었네요. 저는 일단 USB를 내려놓았습니다.
주문 앱이 메뉴를 물어봤습니다
주문 앱이 안맵다떡볶이 메뉴 서비스에 요청합니다.
“메뉴 목록 알려주세요.”
메뉴 서비스가 준비한 정보를 돌려줍니다.
“치즈폭탄, 6,500원, 주문 가능.”
앱이 보내는 건 요청, 서비스가 돌려주는 건 응답입니다. 앱은 받은 정보를 자기 화면에 표시하는 거죠.
물론 프로그램끼리 진짜 한국어로 채팅하는 건 아닙니다. 위 대사는 보기 쉽게 풀어쓴 거예요. 실제 요청 방법과 응답 형식은 미리 정해 둡니다.
앱: 메뉴 정보 주세요.
메뉴 서비스: 준비한 정보 나갑니다.
API가 떡볶이를 볶아주는 건 아닙니다. 메뉴 서비스가 제공하는 정보를 다른 프로그램에서 이용할 수 있게 하는 겁니다.
그럼 가게 안을 다 열어주는 거임?
메뉴 정보를 받았다니까 갑자기 욕심이 납니다.
“그럼 비법 레시피도 받을 수 있나?”
아니요. 이 예시의 메뉴 조회 API가 제공하는 건 메뉴 이름과 가격 같은 정보입니다. 그 창구가 있다고 사장님 비밀번호나 비법 소스까지 꺼낼 수 있는 건 아닙니다.
창구가 있다는 것과 모든 것을 공개한다는 것은 다릅니다. 사용할 수 있는 기능과 권한은 서비스가 정합니다. 요금이나 사용 횟수 제한이 있는 경우도 있고요.
그래서 API 연결 얘기를 들었다면, 딱 세 가지만 물어보면 됩니다.
무슨 정보나 기능을 쓸 수 있나요? 메뉴 조회가 필요한데 주문 취소 기능만 있으면 곤란합니다.
요청 방법을 설명한 문서가 있나요? 앱이 그 방법에 맞춰 이용해야 합니다.
사용 권한이나 요금·횟수 조건은 뭔가요? ‘연결 가능’이 곧 ‘누구나 공짜로 무제한’이라는 뜻은 아닙니다.
이름의 약자를 전부 외우기보다, 내가 어떤 창구를 쓰려는지부터 확인하면 됩니다.
그래서 이런 창구를 왜 만든 건데?
주문 앱이 가게의 메뉴 관리 기능을 처음부터 다 만들 필요는 없습니다. 가게가 제공하는 정보를 정해진 방법으로 이용할 수 있으면 됩니다.
매번 사람이 메뉴판을 캡처해 보내는 대신, 프로그램이 요청해서 정보를 받아 쓰는 방식도 만들 수 있고요.
여기서 API가 도움이 됩니다. 프로그램의 안쪽을 전부 알아야만 쓸 수 있는 게 아니라, 제공자가 정한 접점을 통해 필요한 기능이나 정보를 이용하게 하는 것.
오늘은 이것만 기억하면 됩니다. API는 케이블이 아니라 프로그램이 이용하도록 마련한 창구와 규칙입니다. 연결한다고 모든 기능이 저절로 생기지는 않고, 어떤 요청을 어떻게 할지는 맞춰야 합니다.
가격표 배달은 프로그램한테 맡기는 구조를 생각해볼 수 있겠네요.
떡볶이 배달까지 끝난 줄 알았으면 큰일 날 뻔했습니다. 메뉴 정보를 받았다고 떡볶이가 휴대폰 밖으로 나오는 건 아니니까요.
표지 원본: Math Lady / Imgflip, 한 컷 크롭·문구 조판. 본문 GIF 출처는 각 짤 아래에 표기했습니다.

