Webservices mit Oracle APEX verwenden
Mit Webservices können Anwendungen in einer Plattform-neutralen, sprachunabhängigen Umgebung über das Web miteinander interagieren. In einem typischen Szenario für Webservices sendet eine Geschäftsanwendung über das 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 in der Regel auf einer SOAP- oder REST-Architektur (Representational State Transfer).
Mit REST-Datenquellen können APEX-Entwickler deklarativ von verschiedenen REST-Endpunkten aus auf Datenservices zugreifen, sodass Lese- und Schreibvorgänge möglich sind. Neben der Unterstützung intelligenter Caching-Regeln für Remote-REST-Daten bietet Oracle APEX auch die einzigartige Möglichkeit, die Ergebnisse von REST-Datenquellen mit branchenüblichem SQL direkt zu bearbeiten.
Mit dem Package APEX_WEB_SERVICE
können Sie andere Systeme in APEX integrieren, da es Ihnen ermöglicht, mit Webservices überall dort zu interagieren, wo Sie PL/SQL in Ihrer Anwendung verwenden können. Das Package enthält Prozeduren und Funktionen für den Aufruf von SOAP- und RESTful-Webservices und um die Implementierung von OAuth 2.0-Flüssen zu vereinfachen.
- HTTP-Anforderung an einen privaten Host mit Oracle APEX weiterleiten
Es gibt mehrere Anforderungen, um eine HTTP-Anforderung von Oracle APEX in Ihrer Autonomous Database-Instanz an einen privaten Host weiterzuleiten. - Externe Anrufe mit einem vom Kunden verwalteten Wallet mit Oracle APEX tätigen
Oracle APEX in Autonomous Database ist mit einem Oracle Wallet vorkonfiguriert, das mit den meisten HTTPS-Endpunkten funktioniert. Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger gängige 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 externe REST-APIs-Aufrufe ist für Ihre Oracle APEX-Instanz kein ausgehender Webproxy erforderlich. Autonome 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
Bietet Hinweise für die Arbeit mit Webservices in Oracle APEX aus einer Autonomous Database-Instanz.
Übergeordnetes Thema: Anwendungen mit Oracle APEX in Autonomous Database erstellen
HTTP-Anforderung mit Oracle APEX an einen privaten Host weiterleiten
Es gibt mehrere Anforderungen, um eine HTTP-Anforderung von Oracle APEX in Ihrer Autonomous Database-Instanz an einen privaten Host 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 für die Weiterleitung einer HTTP-Anforderung erfüllt, wie hier beschrieben: HTTP-Anforderung an einen privaten Host mit UTL_HTTP weiterleiten.
-
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 zuzugreifen. 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 in Autonomous Database ist mit einem Oracle Wallet vorkonfiguriert, das mit den meisten HTTPS-Endpunkten funktioniert. Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger gängige oder selbstsignierte SSL-Zertifikate verwenden, können Sie ein vom Kunden verwaltetes Wallet konfigurieren.
Oracle APEX in Autonomous Database ist mit einem Oracle Wallet vorkonfiguriert, das mehr als 90 der gängigsten vertrauenswürdigen Root- und SSL-Zwischenzertifikate enthält. Das Package APEX_WEB_SERVICE
nutzt dieses Oracle Wallet automatisch ohne zusätzliche Konfiguration von Anwendungsentwicklern.
Wenn Sie REST-APIs von Servern konsumieren möchten, die weniger gängige 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 Autonomous Database 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, stellen Sie sicher, dass Sie das Präfix DIR:
anstelle des üblichen Präfixes FILE:
verwenden. Beispiele:
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 die Oracle APEX-Instanz ist kein ausgehender Webproxy erforderlich, um externe REST-APIs aufzurufen. Autonome 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;
/
Anschließend 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 Autonomous Database 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
Enthält Notizen für die Arbeit mit Webservices in Oracle APEX von einer Autonomous Database-Instanz.
Beachten Sie beim Arbeiten mit Webservices in Oracle APEX Folgendes:
-
Alle Webservices müssen gesichert sein. Nur HTTPS-Services werden auf dem Standardport (443) unterstützt. Verbindungen über IP-Adressen sind nicht zulässig.
-
Jede Autonomous Database-Instanz ist mit einer Netzwerk-Access Control-Liste (ACL) vorkonfiguriert, um ausgehende Webserviceaufrufe von Oracle APEX an öffentliche Endpunkte zuzulassen.
-
APEX_WEB_SERVICE
-Anforderungen entsprechen nicht dem benutzerdefinierten Wallet, das Sie mitUTL_HTTP.SET_WALLET
-API-Aufrufen festgelegt haben. -
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 das Limit in 250.000 zu ändern, melden Sie sich mit einem SQL-Client als ADMIN bei der Datenbank an, und führen Sie folgenden Befehl aus:BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
Weitere Informationen finden Sie unter
-
APEX_WEB_SERVICE in der Oracle APEX-API-Referenz
-
REST-Datenquellen verwalten in der Oracle APEX App Builder - Benutzerdokumentation
Übergeordnetes Thema: Webservices mit Oracle APEX verwenden