본문 바로가기

Database/Oracle Database

Oracle Application Express 개요 & 샘플 - 5.1. APEX 사용 샘플 #3 - REST 데이터 소스 생성

이전 글: 2022.04.18 - [Database/Oracle Database] - Oracle Application Express 개요 & 샘플 - 4.3. APEX 사용 샘플 #2 - Button 생성 및 시각화 변경

 

APEX 사용 샘플 #3 – REST API 데이터을 이용한 Map, Interactive Grid 생성

이번에는 UN에서 제공하는 매일 업데이트되고 있는 JSON 포맷의 Covid19 현황 데이터를 REST API로 로컬 테이블이 아닌, 데이터 소스로 구성해서 지도로 표현하는 것을 수행해 보겠습니다.

APEX 버전 21.1 이전까지는 APEX에서 지도를 표기하기 위해서는 구글, 네이버와 같은 지도를 공급해주는 공급자로 부터 API Key를 신청하고 받아서 사용해야 했습니다. 하지만  APEX 버전 21.1 부터는 Oracle Elocation Service를 사용해서 APEX의 내장 기능으로, 타사 솔루션이나 플러그인을 사용할 필요 없이 지도를 어플리케이션에 추가할 수 있습니다. 또한 API 키를 사용할 필요가 없으며 무료입니다.

 

REST API Call을 위한 Wallet 생성 & 인증서 복사

UN에서 제공하는 Covid19 현황 데이터를 우선 API를 통해 REST 데이터 소스로 만드는 작업이 필요합니다. 이에 앞서 API를 통해 데이터를 제공하는 웹페이지의 인증서를 오라클 데이터베이스에 추가하는 작업이 필요합니다. 그렇지 않을 경우, REST 데이터 소스를 만드는 과정에서 ORA-29024: Certificate validation failure 에러 메세지를 받게 됩니다.

먼저 아래 JSON포맷으로 제공하는 UN Covid19 현황 데이터 페이지로 이동합니다. 크롬 브라우저 기준으로 설명드리겠습니다. 해당 페이지에서 사이트 정보 보기를 클릭합니다. 그리고 다시 “이 사이트는 보안 연결(HTTPS)이 사용되었습니다”를 클릭합니다.

https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases2_v1/FeatureServer/2/query?where=1%3D1&outFields=*&outSR=4326&f=json

 

“인증서가 유효함”을 클릭합니다.

 

인증서 관리창에서 인증경로 탭으로 이동합니다. 여기에서 맨 상위 경로를 선택합니다.

 

인증서 보기를 클릭합니다.

  

자세히 탭으로 이동한 다음 “파일에 복사”를 클릭합니다.

 

인증서 내보내기 마법사 창에서 다음을 클릭합니다.

 

내보내기 파일 형식에서 Base 64로 인코딩된 X.509(.CER)을 선택하고 다음을 클릭합니다.

 

내보낼 파일에서 찾아보기를 클릭하여 인증서 이름을 지정하여 저장합니다. 여기서는 uncovid19data 이라고 했습니다.

 

인증서 내보내기 마법사 완료를 확인하고 마침을 클릭합니다.

 

데이터베이스 서버에 방금 전 내보낸 인증서를 담을 Wallet 디렉토리를 만들고, orapki 유틸리티를 이용해서 Wallet을 생성합니다.

[oracle@apex ~]$ mkdir -p /opt/oracle/admin/ORCLCDB/wallet
[oracle@apex ~]$ orapki wallet create -wallet /opt/oracle/admin/ORCLCDB/wallet -pwd xxxxxxxxxx -auto_login
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
 
Operation is successfully completed.

 

내보낸 로컬 PC의 인증서를 데이터베이스 Wallet 디렉토리로 sftp 등을 이용해서 업로드합니다.

 

업로드한 인증서를 Wallet 디렉토리로 옮기고, 소유권도 oracle 유저로 변경합니다.

[oracle@apex ~]$ exit
logout
[opc@apex ~]$ sudo -s
[root@apex opc]# mv ./uncovid19.cer /opt/oracle/admin/ORCLCDB/wallet/
[root@apex opc]# chown oracle:oinstall /opt/oracle/admin/ORCLCDB/wallet/./uncovid19.cer
[root@apex opc]# ls -l /opt/oracle/admin/ORCLCDB/wallet/
total 12
-rw-------. 1 oracle oinstall  194 Apr 15 01:31 cwallet.sso
-rw-------. 1 oracle oinstall    0 Apr 15 01:31 cwallet.sso.lck
-rw-------. 1 oracle oinstall  149 Apr 15 01:31 ewallet.p12
-rw-------. 1 oracle oinstall    0 Apr 15 01:31 ewallet.p12.lck
-rw-r--r--. 1 oracle oinstall 2124 Apr 15 01:38 uncovid19.cer
[root@apex opc]#

 

업로드한 인증서를 Wallet 디렉토리로 옮기고, 소유권도 oracle 유저로 변경합니다.

[oracle@apex ~]$ exit
logout
[opc@apex ~]$ sudo -s
[root@apex opc]# mv ./uncovid19.cer /opt/oracle/admin/ORCLCDB/wallet/
[root@apex opc]# chown oracle:oinstall /opt/oracle/admin/ORCLCDB/wallet/./uncovid19.cer
[root@apex opc]# ls -l /opt/oracle/admin/ORCLCDB/wallet/
total 12
-rw-------. 1 oracle oinstall  194 Apr 15 01:31 cwallet.sso
-rw-------. 1 oracle oinstall    0 Apr 15 01:31 cwallet.sso.lck
-rw-------. 1 oracle oinstall  149 Apr 15 01:31 ewallet.p12
-rw-------. 1 oracle oinstall    0 Apr 15 01:31 ewallet.p12.lck
-rw-r--r--. 1 oracle oinstall 2124 Apr 15 01:38 uncovid19.cer
[root@apex opc]#

 

업로드된 인증서에 대해 orapki 유틸리티로 인증서를 Wallet에 add 합니다.

[root@apex opc]# su - oracle
Last login: Fri Apr 15 01:31:23 GMT 2022 on pts/0
[oracle@apex ~]$ orapki wallet add -wallet /opt/oracle/admin/ORCLCDB/wallet -trusted_cert -cert "/opt/oracle/admin/ORCLCDB/wallet/uncovid19.cer" -pwd xxxxxxxxxx
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
 
Operation is successfully completed.
[oracle@apex ~]$

 

REST 데이터 소스를 제공하는 웹사이트의 인증서를 데이터베이스에 추가했습니다. 덧붙여 한가지 작업이 더 남았습니다. 인증서를 담고 있는 데이터베이스 Wallet의 위치를 APEX에 지정해 주어야 합니다. 이는 INTERNAL Workspace에서 가능합니다. 현재 DEMO Workspace에서 로그아웃 한 뒤, INTERNAL Workspace로 접속합니다.

 

Internal Workspace 홈 화면 왼쪽에 있는 Instance Settings를 클릭합니다.

 

Internal Settings 화면의 Wallet 탭으로 이동해서 Wallet Path와 Wallet Password를 입력합니다. 여기에서는 Wallet Path가 앞서 Wallet을 설정한 대로이지만, 반드시 “file:” 시작해야 합니다. “file:/opt/oracle/admin/ORCLCDB/wallet” 입력했습니다. Wallet Path와 Wallet Password를 입력 후, 오른쪽 상단의 Apply Changes를 클릭합니다.

 

이제 Internal Workspace 로그 아웃한 뒤, 현재 DEMO Workspace로 로그인합니다.

 

REST 데이터 소스 생성

이제 REST 데이터 소스를 만들 차례입니다. REST 데이터 소스는 어플리케이션의 Shared Components에서 만듭니다.

Shared Components는 어플리케이션 내의 모든 페이지에 표시하거나 적용할 수 있습니다. 어플리케이션 레벨 또는 특정 페이지에서 Shared Components 페이지의 도구와 마법사를 사용할 수 있습니다.

작업 중인 어플리케이션(여기에서는 Application 100) 홈페이지로 이동한 다음, Shared Components를 클릭합니다.

 

하단의 Data Sources 섹션에서 Rest Data Sources를 클릭합니다.

 

Create 버튼을 클릭해서 REST 데이터 소스 생성을 시작합니다.

 

Create REST Data Source에서 From scratch를 선택합니다.

 

REST 데이터 소스 이름과 URI Endpoint를 입력합니다. 아래와 같이 입력했습니다.

·        Name: UN Covid19 Data

·        URI Endpoint: https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases2_v1/FeatureServer/2/query?where=1%3D1&outFields=*&outSR=4326&f=json

 

APEX는 URL을 자동으로 Base Path와 Service URL Path로 구분합니다. Next를 클릭합니다.

 

Pagination Type은 No Pagination으로 하고 Next를 클릭합니다.

 

Discover를 클릭합니다. APEX가 UN Covid19 데이터 API를 호출해서 어플리케이션의 데이터 소스로 사용할 수 있도록 데이터를 칼럼으로 파싱하는지 확인합니다.

 

아래와 같이 생성된 데이터의 미리 보기가 가능한 지 확인합니다. 오른쪽 하단의 Create REST Data Source를 클릭합니다.

 

REST Data Source가 만들어졌습니다.

 

<END>

 

다음 글:

2022.04.18 - [Database/Oracle Database] - Oracle Application Express 개요 & 샘플 - 5.2. APEX 사용 샘플 #3 - Map, Interactive Grid 생성