API가 도대체 뭔데?
“API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.”
위키피디아 사전
사전적인 정의를 봐서는 한번에 이해하기 힘들다. 비유를 들어 API 개념에 대해 이해해보자.
카페에가서 커피를 주문하는 상황이라고 가정해보자.
손님: 아메리카노 한잔 주세요.
캐셔: 따듯한거로 드릴까요? 차가운거로 드릴까요?
손님: 차가운거로 주세요.
캐셔: 사이즈는 어떻게 하시겠어요?
손님: 엑스트라 사이즈로 주세요.
캐셔: 네, 드시고 가시나요?
손님: 아니요. 테이크아웃 할게요
캐셔: 아이스 아메리카노 엑스트라 사이즈 한잔 준비해드리겠습니다.
[ 주문서: 진동벨 1번/아이스 아메리카노/엑스트라/테이크아웃 ]
바리스타: (주문서를 보고 음료를 제조한다.)
바리스타: (제조된 음료를 카운터에 가져다 둔다.)
캐셔: (1번 손님에게 주문한 아메리카노를 전달한다.) 1번 손님, 주문하신 음료 준비됐습니다.
손님: 감사합니다.
여기서 캐셔의 역할은 손님에게 주문을 받아 바리스타에게 제조를 요청한다. 그런 다음 바리스타가 만든 음료를 다시 손님에게 전달한다. 바로 캐셔의 역할이 API의 역할이다.
API는 손님(프로그램)에게 주문(명령)을 받으면 바리스타(응용 프로그램)과 상호작용해 주문서(명령에 대한 값)을 전달한다. 이때 손님이 캐셔에게 주문할 음료가 아이스인지/핫인지, 매장인지/포장인지 등의 정해진 옵션을 제대로 전달하지 않으면 손님은 원하는 정보를 얻을 수 없다. 즉, 약속된 규격에 맞게 정보를 요청해야 원하는 정보를 받을 수 있다.
다시 말해, API는 어떤 응용프로그램에서 데이터를 주고 받기 위한 약속이다. 특정 사이트에서 제공하는 특정 데이터를 공유할 때 어떤 방식으로 정보를 요청해야하는지, 어떤 데이터를 제공 받을 수 있을지에 대한 규격을 말하는 것이다. 그래도 이해가 되지 않는다면, 아래 예시를 통해 감을 잡아보자.
예시로 이해하는 오픈 API
그럼 오픈 API는 뭐지?
API는 사용하는 방법/용도에 따라 오픈 API와 비공개 API가 있다. 오픈 API(공개 API)는 누구나 사용할 수 있도록 공개된 API를 말한다. 비공개 API는 권한이 있는 사용자만 사용이 가능하다.
우리는 이미 일상 속에서 오픈 API가 활용된 서비스를 많이 접하고 있다. 오픈 API는 공공데이터, 날씨, 지도, 소셜 네트워크 서비스 (SNS)등 다양한 분야에 활용되고 있다. 정부와 사기업(구글, 카카오, 네이버 등)에서 수집한 데이터를 오픈 API 형태로 제공하고 있다. 오픈 API를 사용하면 개발에 들어가는 시간과 비용을 줄일 수 있다.
기상청 API
일기 예보 정보를 내가 만드는 앱(또는 웹)에 불러오고 싶을 때 어떻게 해야할까? 기상자료개방포털에서 필요한 기상정보 오픈 API를 확인하고 신청하면 사용할 수 있다.
기상청에서 수집하고 있는 정보를 사용할 수 있다. 예를 들면, 단기예보 조회 서비스, 생활기상지수 조회 서비스, 위성자료 경량화 조회 서비스, 일기도 조회 서비스 등 기상과 관련된 정보를 사용자들에게 오픈 API 형태로 제공하고 있다.
지도 API
흔하게 접할 수 있는 것이 지도 API이다. 카카오, 네이버, 구글 등에서 제공하는 지도 오픈 API를 사용해 우편번호를 입력하고, 지도에 마커를 찍는다거나 현재 위치를 표시하는 등 다양한 기능을 활용할 수 있다. 지도 API 이외에도 소셜 로그인, 결제(페이), 검색 등의 API도 제공하고 있다.
공공 데이터 API
공공데이터 포털에서 국가 기관에서 보유하고 있는 데이터를 활용할 수 있다. 데이터 셋 뿐만 아니라 오픈 API도 제공하고 있다. 질병관리청 백신 접종 정보, 한국수출입은행 환율정보, 국토교통부 공간정보, 한국관광공사 관광정보, 서울특별시 버스 노선 정보, 한국환경공당 대기오염정보 등 공공기관에서 수집한 데이터를 오픈 API형태로 제공하고 있다.
오픈 API의 구조를 살펴보자.
공공데이터 포털에서는 회원가입를 하고 신청 후 승인이 되면 무료로 오픈 API를 사용할 수 있다. 국회 도서관의 자료 검색 서비스로 오픈 API의 구조를 살펴보려한다.
해당 오픈 API 정보
API명(국문) | 자료 검색 서비스 |
API 설명 | 국회도서관에서 제공하는 도서자료, 학위논문, 국내외 기사 등의 목록DB를 키워드와 검색대상, 검색조건 등을 사용하여 검색하는 서비스 |
해당 오픈 API에서 제공하는 서비스
API명(국문) | 상세기능명(영문) | 상세기능명(국문) |
자료 검색 서비스 | basic | 통합검색 목록조회 |
detail | 상세검색 목록조회 |
해당 오픈 API 구조 살펴보기
먼저, API가 어떻게 동작하는지를 이해하면 어떤 구조가 있는지 짐작할 수 있다.
1. 사용자는 데이터 활용신청을 통해 인증키를 발급 받는다.
2. 발급된 API 키를 이용해 포털을 통해 제공기관에 오픈 API를 요청(호출)한다.
3. 요청된 API를 회신한다.
4. 사용자는 요청한 API 결과를 응답받는다.
즉, 국회도서관의 자료 검색 서비스를 오픈 API를 활용하기 위해서는 인증키가 필요하고, 규격에 맞게 요청를 해야하고, 요청된 정보를 받을 수 있어야 한다.
요청 메시지 구조
항목명(영문) | 항목명(국문) | 항목크기 | 항목구분 | 샘플데이터 | 항목설명 |
serviceKey | 인증키 | 100 | 1 | 인증키 (URL Encode) |
공공데이터포털에서 발급받은 인증키 |
pageno | 페이지 번호 | 4 | 1 | 1 | 페이지 번호 |
displaylines | 한 페이지 결과 수 | 4 | 1 | 10 | 한 페이지 결과(record)수 |
search | 검색어 | 500 | 1 | 전체,코로나|서명,미국 | 검색항목,검색키워드[|검색항목,검색키워드] 형태의 검색조건 (각 항목은 AND 연산처리) |
요청 메시지의 테이블이다. 위의 규격으로 API를 요청하면, 국회도서관(제공기관)은 이에 맞게 정보를 제공한다.
응답 메시지 구조
항목명(영문) | 항목명(국문) | 항목크기 | 항목구분 | 샘플데이터 | 항목설명 | ||
resultCode | 결과코드 | 2 | 1 | 00 | 결과코드 | ||
resultMsg | 결과메세지 | 50 | 1 | OK | 결과메세지 | ||
total | 전체 결과 수 | 5 | 1 | 36225 | 전체 결과(record) 수 | ||
record | 1 | ||||||
item | 1..n | ||||||
name | 디스플레이 카테고리명 | 300 | 0..n | 자료명/저자사항 | 디스플레이 카테고리명 | ||
value | 디스플레이 데이터 | 1000 | 0..n | 미국 연방정부의 코로나 19 백신 및… | 디스플레이 데이터 |
요청 받은 정보로 제공 기관은 다음 규격으로 응답한다.
만약, 오류가 나면 어떡하지?
제대로 요청이 되지 않거나 응답에 오류가 있으면 에러가 난다. 때문에 에러 코드도 정해져있다.
공공데이터 포털에서 오류가 발생한 경우
에러코드 | 에러메시지 | 설명 |
1 | APPLICATION_ERROR | 어플리케이션 에러 |
4 | HTTP_ERROR | HTTP 에러 |
12 | NO_OPENAPI_SERVICE_ERROR | 해당 오픈API서비스가 없거나 폐기됨 |
20 | SERVICE_ACCESS_DENIED_ERROR | 서비스 접근거부 |
22 | LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR | 서비스 요청제한횟수 초과에러 |
30 | SERVICE_KEY_IS_NOT_REGISTERED_ERROR | 등록되지 않은 서비스키 |
31 | DEADLINE_HAS_EXPIRED_ERROR | 활용기간 만료 |
32 | UNREGISTERED_IP_ERROR | 등록되지 않은 IP |
99 | UNKNOWN_ERROR | 기타에러 |
제공기관 에러코드
요청한 정보나 회신된 정보가 잘못 됐을 경우다.
에러코드 | 에러메시지 | 설명 |
00 | NORMAL_CODE | 정상 |
10 | INVALID_REQUEST_PARAMETER_ERROR | 잘못된 요청 파라메터 에러입니다. |
11 | INVALID_REQUEST_PARAMETER_ERROR | 필수요청 파라메터가 없습니다. |
오픈 API를 사용할 때는 이미 만들어진 데이터베이스를 사용하기 때문에 자유롭게 변경하기는 어렵다. 또한, 해당 API 제공이 중단될 경우 다시 설정해야한다. 그럼에도 비용과 시간을 줄일 수 있다는 장점이 있기 때문에 자주 사용되고 있다.
사용방법 또한 어렵지 않아서 실제 예제를 적용해보려했는데, 공휴일이라 승인이 바로 안떨어져서 예제를 적용해보지는 못했다. 다음에 기회가 된다면 활용법에 대해서도 다뤄보고 싶다.
'IT 이야기 > 내가 PM이라면' 카테고리의 다른 글
스크럼 가이드 살펴보기 (0) | 2022.03.15 |
---|---|
마켓컬리 사례로 프로덕트의 개발적인 측면 살펴보기 ver.2 - PM에게 필요한 개발 지식 (0) | 2022.03.12 |
앱의 형태 쉽게 이해하기 - 모바일 웹, 웹 앱, 하이브리드 앱, 네이티브 앱 (0) | 2022.03.08 |
웹 사이트의 구조 뜯어보기 - 집 꾸미기 (0) | 2022.03.07 |
데이트립을 린 분석 방법론으로 살펴보기 (0) | 2022.02.28 |