È necessario verificare che ogni campo dati esista quando analizza i dati da un'API

2

Scrivo molti software per interagire con le API. Queste API forniscono dati solitamente sotto forma di un documento XML o JSON. Questi documenti suppongono di seguire una specifica e una struttura.

In pratica, tuttavia, questo può essere difficile da codificare. Le specifiche possono cambiare, i campi possono essere rinominati, spostati, lasciati cadere o resi circostanziali.

È buona norma o cattiva pratica verificare sempre che esista un campo dati. Come il seguente.

$first_name = isset($data['first_name']) ? $data['first_name'] : '';

Questo può rendere il codice molto più difficile da leggere e potrebbe richiedere un numero maggiore di codice in determinate circostanze (ad esempio durante l'analisi degli attributi XML o XML con cdata utilizzato). Poi c'è anche il caso di convalidare il tipo di dati corretto.

È opportuno fidarsi di una specifica API, o il codice dovrebbe controllare ogni oggetto dati che non è stato creato da solo?

    
posta Goose 08.09.2016 - 23:07
fonte

2 risposte

2

Affidati alle specifiche API finché non hai motivo di non fidarti di esse.

Se l'API dice che un campo è obbligatorio, ma puoi recuperare i dati dal servizio in cui quel campo non è sempre popolato, allora è "appropriato" trattare tale campo come facoltativo (per scopi di lettura), anche se la specifica dice che è obbligatorio.

Per motivi di scrittura, puoi comunque rispettare il contratto originale, anche se il sistema potrebbe non applicarlo. Il punto è che puoi appendere il tuo cappello alle specifiche API tutto il giorno, ma se il sistema non si comporta in questo modo e non lo controlli, beh, eccolo.

    
risposta data 09.09.2016 - 00:19
fonte
1

Di solito quando si lavora con fornitori di dati di terze parti ciò che si vorrebbe fare è usare un mappatore di dati. In questo modo, ogni volta che cambia il corpo della risposta, devi solo modificare il codice in un unico punto: il mappatore.

    
risposta data 15.09.2016 - 10:14
fonte

Leggi altre domande sui tag