Webservices mit Oracle APEX verwenden
Web-Services ermöglichen es Anwendungen, über das Internet in einer plattformunabhängigen, sprachunabhängigen Umgebung miteinander zu interagieren. In einem typischen Webserviceszenario sendet eine Geschäftsanwendung mit dem HTTP-Protokoll eine Anforderung an einen Service unter einer bestimmten URL. Der Service empfängt die Anforderung, verarbeitet sie und gibt eine Antwort zurück. Webservices basieren normalerweise auf SOAP-(Simple Object Access Protocol-) oder REST-(Representational State Transfer-)Architekturen.
Mit REST-Datenquellen können APEX-Entwickler deklarativ von einer Vielzahl von REST-Endpunkten auf Datenservices zugreifen, sodass Lese- und Schreibvorgänge möglich sind. Neben der Unterstützung von Smart Caching-Regeln für Remote-REST-Daten bietet Oracle APEX auch die einzigartige Möglichkeit, die Ergebnisse von REST-Datenquellen direkt mit branchenüblichem SQL zu bearbeiten.
Mit dem Package APEX_WEB_SERVICE
können Sie andere Systeme in APEX integrieren, indem Sie mit Webservices interagieren können, wo auch immer Sie PL/SQL in Ihrer Anwendung verwenden können. Das Package enthält Prozeduren und Funktionen zum Aufrufen von SOAP- und RESTful-Webservices und zur Vereinfachung der Implementierung von OAuth 2.0-Abläufen.
- HTTP-Anforderung an einen privaten Host mit Oracle APEX weiterleiten
Es gibt mehrere Anforderungen, um eine HTTP-Anforderung an einen privaten Host von Oracle APEX in Ihrer autonomen KI-Datenbankinstanz weiterzuleiten. - Externe Anrufe mit einem vom Kunden verwalteten Wallet mit Oracle APEX tätigen
Oracle APEX in einer autonomen KI-Datenbank ist mit einem Oracle Wallet vorkonfiguriert, das mit den meisten HTTPS-Endpunkten funktioniert. Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger allgemeine oder selbstsignierte SSL-Zertifikate verwenden, können Sie ein vom Kunden verwaltetes Wallet konfigurieren. - Externe Anrufe mit einem Webproxy mit Oracle APEX tätigen
Für Ihre Oracle APEX-Instanz ist kein ausgehender Webproxy erforderlich, um externe REST-APIs-Aufrufe zu tätigen. Autonome KI-Datenbanken, die mit einem privaten Endpunkt konfiguriert sind, können bei Bedarf einen Webproxy verwenden, der in Ihrem VCN bereitgestellt ist. - Hinweise zur Verwendung von Webservices mit Oracle APEX
Zeigt Hinweise für die Arbeit mit Webservices in Oracle APEX von einer autonomen KI-Datenbankinstanz an.
Übergeordnetes Thema: Anwendungen mit Oracle APEX in einer autonomen KI-Datenbank erstellen
HTTP-Anforderung mit Oracle APEX an einen privaten Host weiterleiten
Es gibt mehrere Anforderungen, um eine HTTP-Anforderung an einen privaten Host von Oracle APEX in Ihrer autonomen KI-Datenbankinstanz weiterzuleiten.
Um eine Anforderung an einen Zielhost auf einem privaten Endpunkt oder hinter On-Premise-Firewalls weiterzuleiten, muss der Zielhost über das Oracle Cloud Infrastructure-VCN der Quelldatenbank zugänglich sein:
-
Stellen Sie sicher, dass der Endpunkt die Voraussetzungen zum Weiterleiten einer HTTP-Anforderung erfüllt, wie hier beschrieben: Senden Sie eine HTTP-Anforderung an einen privaten Host mit UTL_HTTP.
-
Fügen Sie die folgende Access Control-Liste für den gewünschten Host als ADMIN hinzu (beachten Sie den Parameter
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; /
Wenn Sie die Datenbankeigenschaft
ROUTE_OUTBOUND_CONNECTIONS
auf PRIVATE_ENDPOINT
setzen, müssen Sie keine Access-Control-Listen für einzelne Hosts definieren, um von APEX aus darauf zugreifen zu können. Weitere Informationen finden Sie unter Erweiterte Sicherheit für ausgehende Verbindungen mit privaten Endpunkten.
Übergeordnetes Thema: Webservices mit Oracle APEX verwenden
Externe Anrufe mit einem vom Kunden verwalteten Wallet mit Oracle APEX tätigen
Oracle APEX auf einer autonomen KI-Datenbank ist mit einem Oracle Wallet vorkonfiguriert, das mit den meisten HTTPS-Endpunkten funktioniert. Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger allgemeine oder selbstsignierte SSL-Zertifikate verwenden, können Sie ein vom Kunden verwaltetes Wallet konfigurieren.
Oracle APEX auf Autonomous AI Database ist mit einem Oracle Wallet vorkonfiguriert, das mehr als 90 der gängigsten vertrauenswürdigen Root- und Zwischen-SSL-Zertifikate enthält. Das APEX_WEB_SERVICE
-Package nutzt dieses Oracle Wallet automatisch ohne zusätzliche Konfiguration von Anwendungsentwicklern.
Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger allgemeine oder selbstsignierte SSL-Zertifikate verwenden, können Sie ein vom Kunden verwaltetes Wallet konfigurieren. Befolgen Sie zunächst die Konfigurations- und Deployment-Anweisungen unter Voraussetzungen für die Verwendung eines vom Kunden verwalteten Wallets mit externen Aufrufen. Nachdem das Wallet in der autonomen KI-Datenbank bereitgestellt wurde, erteilen Sie READ
für das Verzeichnisobjekt, das das Wallet enthält, dem APEX-Plattformschema als ADMIN
:
BEGIN
execute immediate 'grant READ on directory WALLET_DIR to ' ||
APEX_APPLICATION.g_flow_schema_owner;
END;
Wenn Sie das Wallet als Nächstes in APEX_WEB_SERVICE
-API-Aufrufen referenzieren, achten Sie darauf, das Präfix DIR:
anstelle des üblichen Präfix FILE:
zu verwenden. Beispiel:
l_resp := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
p_url => 'https://www.example.com/',
p_http_method => 'GET',
p_wallet_path => 'DIR:WALLET_DIR'
);
Sie können dieses Wallet auch als Standard für die gesamte Oracle APEX-Instanz in APEX-Administrationsservices konfigurieren, indem Sie "Instanz verwalten → Instanzeinstellungen → Wallet → Wallet-Pfad" auswählen oder den Instanzparameter WALLET_PATH
festlegen.
Um zum vorkonfigurierten Wallet zurückzukehren, setzen Sie WALLET_PATH
auf einen leeren Wert.
Weitere Informationen finden Sie unter Auf Oracle APEX Administration Services zugreifen.
Übergeordnetes Thema: Webservices mit Oracle APEX verwenden
Externe Anrufe mit einem Webproxy mit Oracle APEX tätigen
Für Ihre Oracle APEX-Instanz ist kein ausgehender Webproxy erforderlich, um externe REST-APIs aufzurufen. Autonome KI-Datenbanken, die mit einem privaten Endpunkt konfiguriert sind, können bei Bedarf einen Webproxy verwenden, der in Ihrem VCN bereitgestellt ist.
Um einen Webproxy zu verwenden, definieren Sie die folgende Access Control-Liste als 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;
/
Dann können Sie den Webproxy in APEX_WEB_SERVICE
-API-Aufrufen verwenden:
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'
);
Sie können einen Webproxy auch auf Anwendungsebene konfigurieren, indem Sie die Eigenschaft "Proxyserver" auf der Seite "Gemeinsame Komponenten → Anwendungsdefinition → Eigenschaften" oder auf Instanzebene in APEX-Administrationsservices unter "Instanz verwalten → Sicherheit → Instanzproxy" festlegen.
Wenn Sie versuchen, einen Webproxy zu verwenden, wenn Ihre autonome KI-Datenbank mit einem öffentlichen Endpunkt konfiguriert ist, wird ein Fehler zurückgegeben:
ORA-01031: insufficient privileges
Weitere Informationen zu Proxys bei Verwendung der UTL_HTTP
-API finden Sie unter HTTP-Anforderung an einen privaten Host mit UTL_HTTP weiterleiten.
Weitere Informationen finden Sie unter Auf Oracle APEX Administration Services zugreifen.
Übergeordnetes Thema: Webservices mit Oracle APEX verwenden
Hinweise zur Verwendung von Webservices mit Oracle APEX
Bietet Hinweise für die Arbeit mit Webservices in Oracle APEX von einer autonomen KI-Datenbankinstanz.
Beachten Sie Folgendes, wenn Sie mit Webservices in Oracle APEX arbeiten:
-
Alle Webservices müssen gesichert werden. Auf dem Standardport (443) werden nur HTTPS-Services unterstützt. Verbindungen über IP-Adressen sind nicht zulässig.
-
Jede autonome KI-Datenbankinstanz ist mit einer ACL (Network Access Control List) vorkonfiguriert, um ausgehende Webserviceaufrufe von Oracle APEX an öffentliche Endpunkte zuzulassen.
-
Bei
APEX_WEB_SERVICE
-Anforderungen wird das benutzerdefinierte Wallet, das Sie mitUTL_HTTP.SET_WALLET
-API-Aufrufen festgelegt haben, nicht berücksichtigt. -
Es gibt ein Standardlimit von 1.000 ausgehenden Webserviceanforderungen pro APEX-Workspace in einem rollierenden Zeitraum von 24 Stunden (dies gilt für neue Datenbanken, einige ältere Datenbanken haben möglicherweise ein größeres Limit). Wenn das Limit für ausgehende Webserviceaufrufe erreicht ist, wird die folgende SQL-Ausnahme bei der nachfolgenden Anforderung ausgelöst und die Anforderung blockiert:
ORA-20001: You have exceeded the maximum number of web service requests per workspace. Please contact your administrator.
Sie können das Standardlimit für ausgehende Webserviceanforderungen erhöhen oder entfernen, indem Sie einen Wert für den Instanzparameter
MAX_WEBSERVICE_REQUESTS
festlegen oder das Attribut "Maximale Webserviceanforderungen" in APEX Administration Services aktualisieren. Beispiel: Um den Grenzwert auf 250.000 zu ändern, melden Sie sich mit einem SQL-Client bei der Datenbank als ADMIN an, und führen Sie Folgendes aus:BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
Weitere Informationen finden Sie unter
-
APEX_WEB_SERVICE in Oracle APEX-API-Referenz
-
REST-Datenquellen verwalten in der Oracle APEX App Builder-Benutzerdokumentation
Übergeordnetes Thema: Webservices mit Oracle APEX verwenden