Oracle APEXでのWebサービスの使用
Webサービスを使用すると、アプリケーションはWeb上でプラットフォームおよび言語に依存しない環境で相互に通信できます。典型的なWebサービスのシナリオでは、ビジネス・アプリケーションでHTTPプロトコルを使用して、指定したURLのサービスにリクエストを送信することがあります。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。通常、Webサービスは、シンプル・オブジェクト・アクセス・プロトコル(SOAP)またはRepresentational State Transfer (REST)アーキテクチャに基づいています。
APEX開発者は、RESTデータ・ソースを使用して、様々なRESTエンドポイントからデータ・サービスに宣言的にアクセスし、読取りと書込みの両方の操作を実行できます。Oracle APEXは、リモートRESTデータのスマート・キャッシュ・ルールのサポートに加えて、業界標準のSQLを使用してRESTデータ・ソースの結果を直接操作する独自の機能も提供します。
APEX_WEB_SERVICE
パッケージを使用すると、PL/SQLを使用できるアプリケーション内の任意の場所でWebサービスと対話できるため、APEXと他のシステムを統合できます。このパッケージには、SOAPスタイルとRESTfulスタイルの両方のWebサービスをコールし、OAuth 2.0フローの実装を簡素化するプロシージャおよびファンクションが含まれています。
- Oracle APEXを使用したプライベート・ホストへのHTTPリクエストの送信
Autonomous Databaseインスタンス内のOracle APEXからプライベート・ホストにHTTPリクエストを送信するには、いくつかの要件があります。 - Oracle APEXで顧客管理Walletを使用して外部コールを行う
Autonomous Database上のOracle APEXは、ほとんどのHTTPSエンドポイントで動作するOracle Walletで事前構成されています。あまり一般的でないSSL証明書または自己署名付きSSL証明書を使用するサーバーからREST APIを使用する場合、顧客管理ウォレットを構成できます。 - Oracle APEXでのWebプロキシを使用した外部コールの作成
Oracle APEXインスタンスでは、外部REST APIコールを行うためにアウトバウンドWebプロキシは必要ありません。プライベート・エンドポイントで構成されたAutonomous Databasesは、必要に応じてVCNにデプロイされたWebプロキシを使用できます。 - Oracle APEXでのWebサービスの使用に関するノート
Autonomous Databaseインスタンスから、Oracle APEXでのWebサービスの操作に関するノートを提供します。
Oracle APEXを使用したプライベート・ホストへのHTTPリクエストの送信
Autonomous DatabaseインスタンスのOracle APEXからプライベート・ホストにHTTPリクエストを送信するには、いくつかの要件があります。
プライベート・エンドポイントまたはオンプレミス・ファイアウォールの背後にあるターゲット・ホストにリクエストを送信するには、ソース・データベースのOracle Cloud Infrastructure VCNからターゲット・ホストにアクセスできる必要があります:
-
「UTL_HTTPを使用したプライベート・ホストへのHTTPリクエストの送信」の説明に従って、エンドポイントがHTTPリクエストを送信するための前提条件を満たしていることを確認します。
-
目的のホストの次のアクセス制御リストをADMINとして追加します(
private_target
パラメータに注意してください)。BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.example.com', ace => XS$ACE_TYPE( privilege_list => XS$NAME_LIST('http'), principal_name => APEX_APPLICATION.g_flow_schema_owner, principal_type => XS_ACL.ptype_db), private_target => true); END; /
ROUTE_OUTBOUND_CONNECTIONS
データベース・プロパティをPRIVATE_ENDPOINT
に設定した場合、APEXからアクセスするために個々のホストに対してアクセス制御リストを定義する必要はありません。詳細は、プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。
親トピック: Oracle APEXでのWebサービスの使用
Oracle APEXで顧客管理Walletを使用して外部コールを行う
Autonomous Database上のOracle APEXは、ほとんどのHTTPSエンドポイントで動作するOracle Walletで事前構成されています。あまり一般的でないSSL証明書または自己署名付きSSL証明書を使用するサーバーからREST APIを使用する場合、顧客管理ウォレットを構成できます。
Autonomous Database上のOracle APEXは、最も一般的な信頼できるルート証明書と中間SSL証明書が90を超えるOracle Walletを使用して事前構成されています。APEX_WEB_SERVICE
パッケージは、アプリケーション開発者による追加構成なしで、このOracle Walletを自動的に利用します。
あまり一般的でないSSL証明書または自己署名付きSSL証明書を使用するサーバーからREST APIを使用する場合、顧客管理ウォレットを構成できます。まず、「外部コールで顧客管理Walletを使用するための前提条件」の構成およびデプロイメントの手順に従います。ウォレットがAutonomous Databaseにデプロイされたら、ウォレットを含むディレクトリ・オブジェクトのREAD
をAPEXプラットフォーム・スキーマにADMIN
として付与します:
BEGIN
execute immediate 'grant READ on directory WALLET_DIR to ' ||
APEX_APPLICATION.g_flow_schema_owner;
END;
次に、APEX_WEB_SERVICE
APIコールでウォレットを参照する場合は、通常のFILE:
接頭辞のかわりにDIR:
接頭辞を使用してください。たとえば:
l_resp := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
p_url => 'https://www.example.com/',
p_http_method => 'GET',
p_wallet_path => 'DIR:WALLET_DIR'
);
このウォレットをAPEX管理サービスのOracle APEXインスタンス全体のデフォルトとして構成するには、「インスタンスの管理」→「インスタンス設定」→「Wallet」→「Walletパス」を選択するか、WALLET_PATH
インスタンス・パラメータを設定します。
事前構成済ウォレットに切り替えるには、WALLET_PATH
を空の値に設定します。
詳細は、Oracle APEX管理サービスへのアクセスを参照してください。
親トピック: Oracle APEXでのWebサービスの使用
Oracle APEXを使用したWebプロキシを使用した外部コールの実行
Oracle APEXインスタンスでは、外部REST APIコールを行うためにアウトバウンドWebプロキシは必要ありません。プライベート・エンドポイントで構成されたAutonomous Databasesは、必要に応じてVCNにデプロイされたWebプロキシを使用できます。
Webプロキシを使用するには、次のアクセス制御リストをADMIN
として定義します。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'www-proxy.example.com',
lower_port => 80,
ace => XS$ACE_TYPE(
privilege_list => XS$NAME_LIST('HTTP_PROXY'),
principal_name => APEX_APPLICATION.g_flow_schema_owner,
principal_type => XS_ACL.ptype_db),
private_target => true);
END;
/
その後、APEX_WEB_SERVICE
APIコールでWebプロキシを使用できます。
l_resp := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
p_url => 'https://www.example.com/',
p_http_method => 'GET',
p_proxy_override => 'www-proxy.example.com:80'
);
「共有コンポーネント」→「アプリケーション定義」→「プロパティ」ページで「プロキシ・サーバー」プロパティを設定するか、「インスタンスの管理」→「セキュリティ」→「インスタンス・プロキシ」からAPEX管理サービスのインスタンス・レベルでWebプロキシを構成することもできます。
Autonomous Databaseがパブリック・エンドポイントで構成されているときにWebプロキシを使用しようとすると、エラーが返されます:
ORA-01031: insufficient privileges
UTL_HTTP
APIを使用する場合のプロキシの詳細は、「UTL_HTTPを使用したプライベート・ホストへのHTTPリクエストの送信」を参照してください。
詳細は、Oracle APEX管理サービスへのアクセスを参照してください。
親トピック: Oracle APEXでのWebサービスの使用
Oracle APEXでWebサービスを使用するためのノート
Autonomous DatabaseインスタンスからOracle APEXでWebサービスを操作するためのノートを提供します。
Oracle APEXでWebサービスを操作する場合は、次の点に注意してください。
-
すべてのWebサービスは保護されている必要があります。デフォルト・ポート(443)ではHTTPSサービスのみがサポートされます。IPアドレスを介した接続は許可されません。
-
各Autonomous Databaseインスタンスは、Oracle APEXからパブリック・エンドポイントへのアウトバウンドWebサービス・コールを許可するネットワーク・アクセス制御リスト(ACL)で事前構成されています。
-
APEX_WEB_SERVICE
リクエストは、UTL_HTTP.SET_WALLET
APIコールで設定したカスタム・ウォレットを受け入れません。 -
24時間のローリング期間のAPEXワークスペースごとに、50,000のアウトバウンドWebサービス・リクエストのデフォルト制限があります。アウトバウンドWebサービス・コール数の制限に達すると、後続のリクエストで次のSQL例外が発生し、リクエストはブロックされます:
ORA-20001: You have exceeded the maximum number of web service requests per workspace. Please contact your administrator.
アウトバウンドWebサービス・リクエストのデフォルト制限は、
MAX_WEBSERVICE_REQUESTS
インスタンス・パラメータの値を設定するか、APEX管理サービスの「最大Webサービス・リクエスト」属性を更新することで増減できます。たとえば、制限を250,000に変更するには、SQLクライアントを使用してADMINとしてデータベースに接続し、次を実行します:BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
さらに学習するには、次のURLを参照してください。
-
Oracle APEX APIリファレンスのAPEX_WEB_SERVICE
-
『Oracle APEXアプリケーション・ビルダー・ユーザーズ・ガイド』のRESTデータ・ソースの管理
親トピック: Oracle APEXでのWebサービスの使用