DoConure

Campi mancanti e in più

Due regole che rendono l'integrazione tollerante, e una conseguenza che è bene conoscere.

Un campo che il modello si aspetta ma che il tuo payload omette viene reso vuoto. Non è un errore. Un campo che il tuo payload contiene ma che il modello non legge mai viene semplicemente ignorato. Un payload troppo scarso o troppo ricco produce comunque un documento.

Quindi {{ vendor.price }} senza price nei dati lascia uno spazio vuoto dove andrebbe il numero, e la richiesta risponde comunque 200.

La conseguenza: un campo scritto male non è un errore. Invia vendro invece di vendor e ottieni un documento con un buco, non un rifiuto — ma non in silenzio: la risposta porta l'avviso TEMPLATE_FIELDS_MISSING (2104), che indica ciò che il modello si aspettava e non ha ricevuto.

Il payload di ogni richiesta viene inoltre conservato così come è arrivato (per 12 mesi, e mai per una chiamata dataless). Apri Documenti nella console, fai clic su Dettagli sulla generazione, e la pagina mostra affiancati attesi dal modello ma assenti e inviati ma mai letti: un refuso compare subito nel secondo elenco.

Maiuscole e minuscole non contano

Tag e payload non devono concordare su maiuscole e minuscole. Questi sono tutti lo stesso campo:

template:  {{ VendoR.Price }}    {{ vendor.price }}    {{ VENDOR.PRICE }}
payload:   {"Vendor": {"PRICE": …}}   {"vendor": {"price": …}}

Entrambi i lati vengono portati in minuscolo prima dell'unione, nomi dei cicli compresi: {% for R in Forniture %} legge l'array forniture e {{ r.SITE }} legge site su ogni elemento. I valori non vengono mai toccati: una ragione sociale conserva le sue maiuscole.

L'unica cosa da evitare è un payload che contiene lo stesso campo in due grafie (Vendor e vendor insieme): è ambiguo, e vince quello valorizzato, non quello arrivato per primo.