IT 이야기/내가 PM이라면

API가 도대체 뭔데? - API 쉽게 이해하기

왼손잡이 에언 2022. 3. 10. 01:50

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]

 

data.kma.go.kr

 

지도 API

카카오 우편번호 서비스

흔하게 접할 수 있는 것이 지도 API이다. 카카오, 네이버, 구글 등에서 제공하는 지도 오픈 API를 사용해 우편번호를 입력하고, 지도에 마커를 찍는다거나 현재 위치를 표시하는 등 다양한 기능을 활용할 수 있다.  지도 API 이외에도 소셜 로그인, 결제(페이), 검색 등의 API도 제공하고 있다. 

 

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

공공 데이터 API

공공데이터 포털에서 국가 기관에서 보유하고 있는 데이터를 활용할 수 있다. 데이터 셋 뿐만 아니라 오픈 API도 제공하고 있다. 질병관리청 백신 접종 정보, 한국수출입은행 환율정보, 국토교통부 공간정보, 한국관광공사 관광정보, 서울특별시 버스 노선 정보, 한국환경공당 대기오염정보 등 공공기관에서 수집한 데이터를 오픈 API형태로 제공하고 있다. 

 

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr


 

오픈 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 필수요청 파라메터가 없습니다.

 

 

국회 국회도서관_자료검색 서비스

국회도서관에서 제공하는 도서자료, 학위논문, 국내외 기사 등의 목록DB를 키워드와 검색대상, 검색조건 등을 사용하여 검색하는 서비스

www.data.go.kr


오픈 API를 사용할 때는 이미 만들어진 데이터베이스를 사용하기 때문에 자유롭게 변경하기는 어렵다. 또한, 해당 API 제공이 중단될 경우 다시 설정해야한다. 그럼에도 비용과 시간을 줄일 수 있다는 장점이 있기 때문에 자주 사용되고 있다. 

 

사용방법 또한 어렵지 않아서 실제 예제를 적용해보려했는데, 공휴일이라 승인이 바로 안떨어져서 예제를 적용해보지는 못했다. 다음에 기회가 된다면 활용법에 대해서도 다뤄보고 싶다.