---
title: "Gestione degli errori HTTP nelle mappature dei dati dei servizi web"
date: "2019-06-19"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "http-testing"
  - "mapforce"
  - "mapforce-server"
  - "web-services"
description: Scoprite come gestire gli errori HTTP nelle mappature dei dati dei servizi web utilizzando MapForce, garantendo una robusta integrazione dei dati e una segnalazione precisa degli errori nei progetti automatizzati.
---
Status: #blog

Tags:  #data-mapping #flowforce-server #http-testing #mapforce #mapforce-server #web-services

Categories: [data-integration](/blog/it/category/data-integration.md) | [development](/blog/it/category/development.md)
# 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.

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

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.

[![Mappatura dei dati dei servizi web senza gestione degli errori HTTP](/blog/images/airport-status-mapping.png)](airport-status-mapping.png)

[![File JSON generato dall'esempio di mappatura](/blog/images/mapping-result.png)](mapping-result.png)

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](https://httpstat.us/200) visualizzato in una finestra del browser restituisce "200 OK". L'URL [https://httpstat.us/400](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:

![Inserire una funzione di un servizio web in una mappatura dei dati](/blog/images/insert-web-service-function.png)

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.

[![Configurazione delle impostazioni per la chiamata al servizio web](/blog/images/web-service-call-settings.png)](web-service-call-settings.png)

Ecco la tabella di corrispondenza con una costante per fornire il parametro del codice:

[![Servizio web con parametro di input definito nella mappatura dei dati](/blog/images/mapping-1.png)](mapping-1.png)

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:

[![Gestione degli errori HTTP estendendo l'elenco dei codici di stato supportati](/blog/images/response-structure.png)](response-structure.png)

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.

[![Gestione degli errori HTTP tramite la mappatura della risposta a un messaggio salvato in formato testo](/blog/images/mapping-2.png)](mapping-2.png)

Ora possiamo utilizzare il pulsante "Output" situato nella parte inferiore della finestra di mappatura di MapForce per eseguire la mappatura e visualizzare il risultato

![Primo risultato del test relativo al messaggio di mappatura](/blog/images/result-1.png)

 Possiamo modificare il valore costante di input nel pannello di mappatura e rieseguire l'operazione per vedere le differenze

![Secondo risultato del test relativo al messaggio di mappatura](/blog/images/result-2.png)

Possiamo utilizzare una funzione di concatenazione per combinare il risultato con altre informazioni, creando così un messaggio di stato più intuitivo per l'utente

[![Definizione di un risultato di messaggio più completo](/blog/images/elaborate-message.png)](elaborate-message.png)

![Un messaggio di indicazioni più semplice e intuitivo](/blog/images/result-3.png)

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".

![Gestione degli errori HTTP con un corpo della risposta separato](/blog/images/add-body-node.png)

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:

![Gestione degli errori HTTP specificando l'intervallo di codici di stato](/blog/images/response-structure-2.png)

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:

[![Gestione degli errori HTTP in una mappatura dei dati per un servizio web REST](/blog/images/copy-error-handling.png)](copy-error-handling.png)

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](https://www.altova.com/it/mapforce-server) o in un processo pianificato regolarmente tramite [FlowForce Server](https://www.altova.com/it/flowforceserver). 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](https://youtu.be/a83na6G9FjI) per una prima introduzione. Potete provare MapForce direttamente grazie a una [prova gratuita di 30 giorni](https://www.altova.com/it/mapforce/download).
