Usa Web Services con Oracle APEX
I servizi Web consentono alle applicazioni di interagire tra loro tramite il Web in un ambiente indipendente dalla lingua e neutrale 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 sono in genere basati su architetture SOAP (Simple Object Access Protocol) o REST (Representational State Transfer).
Utilizzando le origini dati REST, gli sviluppatori APEX possono accedere in modo dichiarativo ai servizi dati da una vasta gamma di endpoint REST, consentendo operazioni sia di lettura che di scrittura. Oltre a supportare 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 pacchetto 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 SOAP e RESTful e per semplificare l'implementazione dei flussi OAuth 2.0.
- Inviare 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 da server che utilizzano certificati SSL meno comuni o con firma automatica, è possibile configurare un wallet gestito dal cliente. - 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. Gli Autonomous Database configurati con un endpoint privato possono utilizzare un proxy Web distribuito nella VCN, se lo si desidera. - 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.
Argomento padre: Crea 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 in locale, 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 le liste di controllo dell'accesso per singoli host per accedervi da APEX. Per ulteriori informazioni, vedere Maggiore sicurezza per le connessioni in uscita con endpoint privati.
Argomento padre: Usa 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 da server che utilizzano certificati SSL meno comuni o con firma automatica, è 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 radice e intermedi sicuri 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 da server che utilizzano certificati SSL meno comuni o con firma automatica, è possibile configurare un wallet gestito dal cliente. In primo luogo, seguire le istruzioni di configurazione e distribuzione in Prerequisiti per l'utilizzo di un wallet gestito dal cliente con chiamate esterne. Dopo aver distribuito il wallet in Autonomous Database, concedere READ
nell'oggetto directory che contiene 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: Usa servizi Web con Oracle APEX
Effettuare 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. Gli Autonomous Database configurati con un endpoint privato possono utilizzare un proxy Web distribuito nella VCN, se lo si desidera.
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à oppure 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 Sottomettere una richiesta HTTP a un host privato con UTL_HTTP.
Per ulteriori informazioni, vedere Accedere a Oracle APEX Administration Services.
Argomento padre: Usa 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.
Quando si utilizzano i servizi Web in Oracle APEX, tenere presente quanto riportato di seguito.
-
Tutti i servizi Web devono essere protetti. Solo i servizi HTTPS sono supportati sulla porta predefinita (443). 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 chiamate ai servizi Web in uscita da Oracle APEX agli endpoint pubblici.
-
Le richieste
APEX_WEB_SERVICE
non soddisfano il wallet personalizzato impostato con le chiamate APIUTL_HTTP.SET_WALLET
. -
È previsto un limite predefinito di 50.000 richieste di servizio Web in uscita per area di lavoro APEX in un periodo di 24 ore continuative. Se viene raggiunto il limite delle chiamate al servizio Web in uscita, viene generata la seguente eccezione SQL nella richiesta successiva 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 impostandolo su 250.000, connettersi al database come ADMIN utilizzando un client SQL ed eseguire le operazioni riportate di seguito.BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
Per ulteriori informazioni, vedere:
-
APEX_WEB_SERVICE in Riferimento API Oracle APEX
-
Gestione delle origini dati REST nel manuale Oracle APEX App Builder User's Guide
Argomento padre: Usa servizi Web con Oracle APEX