Gestione degli errori HTTP nelle mappature dei dati dei servizi web
I progetti di integrazione dei dati che includono informazioni provenienti da servizi web esterni possono essere vulnerabili a errori HTTP durante il recupero dei dati remoti. Quando le mappature dei dati vengono gestite in modo automatizzato, è particolarmente importante rilevare e segnalare gli errori, anche se questi si verificano solo molto raramente.
Una mappatura dei dati con MapForce può includere chiamate a servizi web e può inviare direttamente il risultato a un file o a un database, oppure può combinarlo con altri dati per ulteriori elaborazioni. Indipendentemente dal risultato finale, un errore di un servizio web HTTP riscontrato durante una richiesta a un servizio web REST mette a rischio l'intera mappatura.
MapForce include funzionalità per gestire gli errori HTTP, invece di interrompere semplicemente l'esecuzione di una trasformazione. Gli sviluppatori possono configurare il corpo di una chiamata a un servizio web REST per gestire e segnalare le eccezioni in base al codice di stato HTTP restituito.
Consideriamo un esempio.

I dati di esempio per la mappatura, inclusi con MapForce, contengono una mappatura reale per un servizio web REST chiamato AirportStatus.mfd. Questa mappatura richiama un servizio web gestito dalla Federal Aviation Administration che fornisce informazioni sui ritardi operativi nei principali aeroporti degli Stati Uniti. L'input della mappatura è un codice aeroportuale di tre lettere, che viene fornito al servizio web, e il risultato viene restituito come un file JSON. La mappatura e un esempio di risultato sono mostrati di seguito.


In caso di qualsiasi errore HTTP, l'esecuzione della mappatura fallirebbe.
Il manuale di aiuto di MapForce include una spiegazione della gestione condizionale della risposta di un servizio web REST. Potremmo semplicemente inserire la parte relativa alla gestione degli errori HTTP nella mappatura esistente, ma non avremmo modo di verificare il risultato in caso di un errore HTTP. Non possiamo forzare il servizio web della FAA a generare un errore HTTP per i test!
Invece, possiamo utilizzare il servizio web disponibile all'indirizzo httpstat.us per generare vari codici di stato HTTP e relative descrizioni, utili per i test in una mappatura dati separata. Ad esempio, l'URL https://httpstat.us/200 visualizzato in una finestra del browser restituisce "200 OK". L'URL https://httpstat.us/400 restituisce "400 Bad Request", e così via per tutti i codici di stato definiti, fino al 524.
Possiamo implementare una richiesta REST per questo servizio in MapForce semplicemente aprendo un nuovo file di mappatura e facendo clic sul pulsante "Inserisci servizio web" nella barra degli strumenti:

Questo apre la finestra di dialogo "Impostazioni chiamata del servizio web", dove possiamo configurare manualmente le impostazioni. Utilizzeremo un parametro al posto di un codice di stato specifico, in modo da poter testare facilmente valori alternativi.

Ecco la tabella di corrispondenza con una costante per fornire il parametro del codice:

Di default, una funzione di servizio web supporta solo i valori di risposta HTTP normali compresi nell'intervallo 200-299. Possiamo aggiungere il supporto per altri codici facendo clic con il tasto destro sull'elemento "Body" nella sezione "Risposta", aprendo la finestra di dialogo "Struttura della risposta" e ampliando l'intervallo dei codici di stato accettati:

Possiamo associare il risultato della richiesta REST a un semplice file di testo, utilizzando la funzione "decode-mime-entity". Il servizio web non fornisce il valore del set di caratteri nell'intestazione della risposta, quindi assoceremo il valore costante "utf-8" alla funzione di decodifica.

Ora possiamo utilizzare il pulsante "Output" situato nella parte inferiore della finestra di mappatura di MapForce per eseguire la mappatura e visualizzare il risultato

Possiamo modificare il valore costante di input nel pannello di mappatura e rieseguire l'operazione per vedere le differenze

Possiamo utilizzare una funzione di concatenazione per combinare il risultato con altre informazioni, creando così un messaggio di stato più intuitivo per l'utente


Una volta testata la mappatura con una varietà di possibili codici di stato HTTP e siamo soddisfatti dei risultati, possiamo aggiungere la gestione degli errori HTTP alla mappatura esistente di AirportStatus.mfd tramite un'operazione di copia-incolla. Innanzitutto, creeremo un nuovo corpo della risposta nella mappatura di AirportStatus per gestire i codici di risposta al di fuori dell'intervallo normale. Possiamo fare clic con il tasto destro sull'elemento "Body" nella sezione "Risposta" del servizio web per aggiungere un nuovo nodo "Body".

Questo aggiunge il nuovo corpo e apre la finestra di dialogo "Struttura della risposta", dove potremo specificare come gestire eventuali codici di stato HTTP superiori a 299:

Ora possiamo copiare i componenti di mappatura relativi alla gestione degli errori dalla nostra definizione di test, incollarli nella mappatura di AirportStatus e collegare il nuovo corpo della risposta:

La mappatura è ora definita con più output. Durante l'esecuzione manuale direttamente in MapForce, l'utente sceglie uno degli output disponibili. Il significato del percorso di esecuzione per la gestione degli errori HTTP diventa chiaro quando la mappatura è destinata all'esecuzione sotto controllo automatizzato tramite MapForce Server o in un processo pianificato regolarmente tramite FlowForce Server. Ad esempio, una mappatura automatizzata dei dati potrebbe segnalare lo stato di 50 aeroporti diversi ogni mezz'ora.
Durante l'esecuzione automatica, tutti i percorsi di output della mappatura dei dati vengono elaborati. Per garantire che il servizio web venga chiamato una sola volta per ogni input, un componente intermedio intercetterà il risultato del servizio web prima di procedere alla mappatura verso la destinazione finale. In caso di errori HTTP, la data, l'ora e il codice di stato HTTP esatto verranno registrati.
Gestire gli errori HTTP in una mappatura dati per servizi web REST è come avere una cintura di sicurezza o un estintore: è qualcosa di molto utile da avere, ma si spera di non doverlo mai utilizzare!
Se siete nuovi utenti di MapForce, date un'occhiata a questa panoramica in video per una prima introduzione. Potete provare MapForce direttamente grazie a una prova gratuita di 30 giorni.