API레이어를 델파이에서 이용하기

이미 알고 있겠지만, (엠바카데로의 모회사인) 아이데라는 API레이어(apilayer)를 최근 인수했다. API레이어는 수많은 REST API 마이크로 서비스를 제공하는 회사이다. 제공하는 서비스는 IP 주소기반 위치, 이메일 및 전화번호 확인, 재무 정보, 날씨, 항공편 추적 등 광범위하다. 제공되는 서비스 상품 목록은 https://apilayer.com/에서 확인할 수 있다. 각 서비스 상품 별로 별도의 웹사이트가 제공되므로, 원하는 웹사이트에 로그인하면 REST API 호출을 할 수 있다. 일정 호출 횟수까지는 무료이다. 

이 블로그 포스트는 API레이어에서 어떤 서비스를 제공하는 지에 대한 내용이 아니라, RAD스튜디어에서 어떻게 호출할 수 있는지에 대해 다루고자 한다. 호출 대상으로는 무료 REST 국가 API와 유료 위치 서비스이다. 

REST 국가 API 이용하기

우선 간단하고 완전히 무료로 제공되는 API레이어 서비스부터 살펴보자. https://github.com/apilayer/restcountries 에는 이 서비스에 대한 도움말이 있다. 일단 테스트를 하기 위해 REST디버거를 사용하여 서비스 조회를 해보았다. 아래 그림과 같이 “name” 엔드포인트를 사용하고 “united”를 파라미터로 전달하여서 결과를 받았다:

REST디버거에서 나온 정확한 데이터가 나오면, [Copy Components] 버튼을 사용하여 REST 클라이언트 라이브러리를 복사하여 애플리케이션을 만들 때 그대로 사용할 수 있다. 이제 RAD스튜디오에서 (VCL이든 FMX든) 델파이 또는 C++애플리케이션을 하나 만들고, 데이터 모듈에서 붙여넣기를 한다 – 또는 테스트 목적이라서 데이터 모듈을 따로 만들기가 귀찮다면 일반 폼에서 붙여넣어도 된다.

이어서 Panel 1개, Edit 1개, (DataSource 컴포넌트와) DBGrid 1개를 폼에 추가한 후 앞서 붙여넣기를 통해 자동으로 추가된 컴포넌트들 중 RESTRequest 컴포넌트를 클릭하고 마우스 오른쪽을 이용하여 Execute를 실행하여, 데이터를 잘 가져오는 지를 개발화면에서 다시 확인했다.

국가명을 필터링하는 코드 구현은 매우 간단하다:

위 작업 이외에 특별히 내가 수정해야 했던 것은 한 가지이다. RESTResponseDataSetAdapter1 컴포넌트의 속성 중 TypesMode의 값을 JSONOnly로 바꾸어야했다. 이유는 실행중 일부 시간대 관련 문장까지도 변환하려고 시도함에 따라 예외가 발생했기 때문이다.

Position Stack API를 사용하여 위치정보 분석하기

다음으로, 유료 API인  https://positionstack.com/ 에서 무료로 제공하는 만큼만 이용해보았다. 이 서비스는 위치값 분석, 위도와 경도, 기타 해당 지역 정보등을 제공한다. 예를 들면 아래와 같이 위치를 제공하면 위도, 경도, 지역의 기타 정보를 받을 수 있는 “forward” 지오코딩을 REST디버거를 이용해서 사용해보았다. 결과를 표에서 보기위해서 REST 응답 데이터 중 “data” 요소를 JSON Root Element로 지정하였다.

이 서비스를 사용하려면, 회원 가입을 하고 받은 개발자 키를 Request에 파라미터로 전달해야 한다. (아마 애플리케이션을 완성하고 실제로 사용할 때에는 해당키를 인코딩함으로써 키값을 그대로 노출하지 않는 것이 보다 안전할 것이다.)

데이터를 잘 가져온 것을 확인했으면 첫번째 데모와 같이 [Copy Components] 버튼을 클릭하여 복사한 후 RAD스튜디오에서 사용한다. FMX 앱에서 위치센스를 이용하는 것도 좋다. (위치센서 튜토리얼: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Mobile_Tutorial:_Using_Location_Sensors_(iOS_and_Android) 

결론

마이크로서비스 API를 활용하여 모바일이나 데스크톱 애플리케이션을 만들면, 혁신적인 기능을 매우 빠르게 만들고 배포할 수 있다. 이와 동시에 서비스 구독 기반이므로 인프라의 확장성 확보할 수 있다. API레이어 서비스를 잘 활용하여 더 멋진 앱을 만들 수 있기를 응원한다.

참고: 여기에 사용된 REST디버거는 RAD스튜디오/델파이/C++빌더에 들어있으므로 IDE >메뉴>Tools에서 사용할 수 있다. 

12.0 12.1 AI AWS C++ c++빌더 chatgpt DelphiCon ios rad서버 RAD스튜디오 UI UIUX UX uxsummit vcl 개발 개발사례 고객사례 기술레터 기술백서 데브옵스 데이터 데이터베이스 델파이 리눅스 마이그레이션 머신러닝 모바일 새버전 샘플 세미나 안드로이드 윈도우 인공지능 인터베이스 출시 커뮤니티에디션 코드 클라우드 파이썬 파이어몽키 현대화