Utilizza i servizi Web con Oracle APEX
I servizi Web consentono alle applicazioni di interagire tra loro sul Web in un ambiente indipendente dalla lingua e indipendente dalla piattaforma. In uno scenario tipico dei servizi Web, un'applicazione business invia una richiesta a un servizio in un determinato URL utilizzando il protocollo HTTP. Il servizio riceve la richiesta, la elabora e restituisce una risposta. I servizi Web si basano in genere su architetture SOAP (Simple Object Access Protocol) o Representational State Transfer (REST).
Utilizzando le origini dati REST, gli sviluppatori APEX possono accedere in modo dichiarativo ai servizi di dati da una vasta gamma di endpoint REST, consentendo operazioni di lettura e scrittura. Oltre a supportare le regole di inserimento nella cache intelligente per i dati REST remoti, Oracle APEX offre anche la possibilità esclusiva di manipolare direttamente i risultati delle origini dati REST utilizzando SQL standard del settore.
Il package APEX_WEB_SERVICE
consente di integrare altri sistemi con APEX consentendo di interagire con i servizi Web ovunque sia possibile utilizzare PL/SQL nell'applicazione. Il pacchetto contiene procedure e funzioni per chiamare i servizi Web in stile SOAP e RESTful e per semplificare l'implementazione dei flussi OAuth 2.0.
- Sottomettere una richiesta HTTP a un host privato con Oracle APEX
Ci sono diversi requisiti per sottomettere una richiesta HTTP a un host privato da Oracle APEX nell'istanza di Autonomous Database. - Effettua chiamate esterne utilizzando un wallet gestito dal cliente con Oracle APEX
Oracle APEX su Autonomous Database è preconfigurato con un Oracle Wallet che funzionerà con la maggior parte degli endpoint HTTPS. Se si desidera utilizzare le API REST dai server che utilizzano certificati SSL meno comuni o autofirmati, è possibile configurare un wallet gestito dal cliente. - Eseguire chiamate esterne utilizzando un proxy Web con Oracle APEX
L'istanza di Oracle APEX non richiede un proxy Web in uscita per effettuare chiamate API REST esterne. Se lo si desidera, gli Autonomous Database configurati con un endpoint privato possono utilizzare un proxy Web distribuito nella VCN. - Note per l'uso dei servizi Web con Oracle APEX
Fornisce note per l'utilizzo dei servizi Web in Oracle APEX da un'istanza di Autonomous Database.
Argomento padre: Creare applicazioni con Oracle APEX in Autonomous Database
Invia una richiesta HTTP a un host privato con Oracle APEX
Esistono diversi requisiti per sottomettere una richiesta HTTP a un host privato da Oracle APEX nell'istanza di Autonomous Database.
Per sottomettere una richiesta a un host di destinazione su un endpoint privato o dietro firewall on premise, l'host di destinazione deve essere accessibile dalla VCN Oracle Cloud Infrastructure del database di origine:
-
Assicurarsi che l'endpoint soddisfi i prerequisiti per sottomettere una richiesta HTTP, come descritto qui: Sottomettere una richiesta HTTP a un host privato con UTL_HTTP.
-
Aggiungere la seguente lista di controllo dell'accesso per l'host desiderato come ADMIN (notare il parametro
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; /
Se si imposta la proprietà del database
ROUTE_OUTBOUND_CONNECTIONS
su PRIVATE_ENDPOINT
, non è necessario definire liste di controllo dell'accesso per i singoli host per accedervi da APEX. Per ulteriori informazioni, vedere Sicurezza avanzata per le connessioni in uscita con endpoint privati.
Argomento padre: Utilizzare i servizi Web con Oracle APEX
Effettua chiamate esterne utilizzando un wallet gestito dal cliente con Oracle APEX
Oracle APEX su Autonomous Database è preconfigurato con un Oracle Wallet che funzionerà con la maggior parte degli endpoint HTTPS. Se si desidera utilizzare le API REST dai server che utilizzano certificati SSL meno comuni o autofirmati, è possibile configurare un wallet gestito dal cliente.
Oracle APEX su Autonomous Database è preconfigurato con un Oracle Wallet che contiene più di 90 dei certificati SSL root e intermedi più comuni. Il pacchetto APEX_WEB_SERVICE
sfrutta automaticamente questo Oracle Wallet senza ulteriori configurazioni da parte degli sviluppatori di applicazioni.
Se si desidera utilizzare le API REST dai server che utilizzano certificati SSL meno comuni o autofirmati, è possibile configurare un wallet gestito dal cliente. In primo luogo, seguire le istruzioni di configurazione e distribuzione in Prerequisiti per l'uso di un wallet gestito dal cliente con chiamate esterne. Dopo la distribuzione del wallet ad Autonomous Database, concedere READ
sull'oggetto directory contenente il wallet allo schema della piattaforma APEX come ADMIN
:
BEGIN
execute immediate 'grant READ on directory WALLET_DIR to ' ||
APEX_APPLICATION.g_flow_schema_owner;
END;
Successivamente, quando si fa riferimento al wallet nelle chiamate API APEX_WEB_SERVICE
, assicurarsi di utilizzare il prefisso DIR:
anziché il solito prefisso FILE:
. Ad esempio:
l_resp := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
p_url => 'https://www.example.com/',
p_http_method => 'GET',
p_wallet_path => 'DIR:WALLET_DIR'
);
È inoltre possibile configurare questo wallet come predefinito per l'intera istanza di Oracle APEX in APEX Administration Services selezionando Gestisci istanza → Impostazioni istanza → Wallet → Percorso wallet oppure impostando il parametro di istanza WALLET_PATH
.
Per tornare al wallet preconfigurato, impostare WALLET_PATH
su un valore vuoto.
Per ulteriori informazioni, vedere Accedere a Oracle APEX Administration Services.
Argomento padre: Utilizzare i servizi Web con Oracle APEX
Effettua chiamate esterne utilizzando un proxy Web con Oracle APEX
L'istanza di Oracle APEX non richiede un proxy Web in uscita per effettuare chiamate alle API REST esterne. Se lo si desidera, gli Autonomous Database configurati con un endpoint privato possono utilizzare un proxy Web distribuito nella VCN.
Per utilizzare un proxy Web, definire la seguente lista di controllo dell'accesso come 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;
/
Quindi, è possibile utilizzare il proxy Web nelle chiamate API APEX_WEB_SERVICE
:
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'
);
È inoltre possibile configurare un proxy Web a livello di applicazione impostando la proprietà Server proxy nella pagina Componenti condivisi → Definizione applicazione → Proprietà o a livello di istanza in APEX Administration Services da Gestisci istanza → Sicurezza → Proxy istanza.
Se si tenta di utilizzare un proxy Web quando Autonomous Database è configurato con un endpoint pubblico, viene restituito un errore:
ORA-01031: insufficient privileges
Per ulteriori informazioni sui proxy quando si utilizza l'API UTL_HTTP
, vedere Invia una richiesta HTTP a un host privato con UTL_HTTP.
Per ulteriori informazioni, vedere Accedere a Oracle APEX Administration Services.
Argomento padre: Utilizzare i servizi Web con Oracle APEX
Note per l'utilizzo dei servizi Web con Oracle APEX
Fornisce note per l'utilizzo dei servizi Web in Oracle APEX da un'istanza di Autonomous Database.
Tenere presente quanto riportato di seguito quando si utilizzano i servizi Web in Oracle APEX.
-
Tutti i servizi Web devono essere protetti. Sulla porta predefinita (443) sono supportati solo i servizi HTTPS. Le connessioni tramite indirizzi IP non sono consentite.
-
Ogni istanza di Autonomous Database è preconfigurata con una lista di controllo dell'accesso di rete (ACL, Network Access Control List) per consentire le chiamate dei servizi Web in uscita da Oracle APEX agli endpoint pubblici.
-
Le richieste
APEX_WEB_SERVICE
non rispettano il wallet personalizzato impostato con le chiamate APIUTL_HTTP.SET_WALLET
. -
È previsto un limite predefinito di 1.000 richieste di servizio Web in uscita per ogni area di lavoro APEX in un periodo di 24 ore in sequenza (ciò vale per i nuovi database, alcuni database meno recenti potrebbero avere un limite maggiore). Se viene raggiunto il limite di chiamate del servizio Web in uscita, nella richiesta successiva viene generata la seguente eccezione SQL e la richiesta viene bloccata:
ORA-20001: You have exceeded the maximum number of web service requests per workspace. Please contact your administrator.
È possibile aumentare o rimuovere il limite predefinito delle richieste di servizio Web in uscita impostando un valore per il parametro di istanza
MAX_WEBSERVICE_REQUESTS
o aggiornando l'attributo Numero massimo di richieste di servizio Web in APEX Administration Services. Ad esempio, per modificare il limite a 250.000, connettersi al database come ADMIN utilizzando un client SQL ed eseguire quanto segue:BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
Per ulteriori informazioni, vedere:
-
APEX_WEB_SERVICE in Oracle APEX API Reference
-
Gestione delle origini dati REST in Oracle APEX App Builder User's Guide
Argomento padre: Utilizzare i servizi Web con Oracle APEX