Come utilizzare l'API REST incoerente con il backend di Mongo DB?

1

Utilizziamo un'API REST di terze parti e stiamo costruendo una delle pagine sul nostro sito ASP.NET in base ai dati che fornisce. Otteniamo risultati in JSON e interagiamo principalmente con il .NET MongoDB Driver .

Il server dietro la loro API utilizza mongoDB, dove i documenti non devono seguire alcuna struttura. Il problema è che la struttura del documento del JSON che ricevo dalla loro API REST non è coerente neanche. Il provider dice:

Sometimes we get incorrect data, that's just how this system works. We expose all our data in the API, even if it is inconsistent.

Sto costruendo un sistema attorno ad esso, e se i dati su cui sono basato sono incoerenti, non sono sicuro di cosa fare. Sono nuovo nel parlare con una "API REST NoSQL" e vorrei conoscere l'approccio migliore per gestire questa situazione.

I miei pensieri fin qui sotto. Quali sono giusti o sbagliati e perché?

  1. Come consumatore, devo eseguire controlli nulli, inventare valori predefiniti o scartare gli elementi dei risultati, per ogni singolo valore in ogni singolo livello in ogni struttura del documento che in qualche modo potrebbe essere danneggiato. Questo richiederà molto tempo ed è difficile da mantenere.

  2. Anche se il server esegue MongoDB in background e non deve seguire la struttura, un'API REST dovrebbe restituire JSON in base a una struttura e essere in grado di dire in anticipo cosa restituirà. Dovrebbe essere il fornitore dell'API a pulire i propri dati per conformarsi a una struttura JSON coerente, non al consumatore.

  3. Via di mezzo: il fornitore e il consumatore (me) devono preventivamente concordare quali valori dovrebbero essere sempre previsti. Una specie di scheletro struttura JSON. Questo è ciò che vorrei, ma probabilmente non sarei in grado di fidarmi al 100%.

  4. Dovrei usare qualche architettura / pattern / componente / soluzione di cui non sono ancora a conoscenza.

Mentre una risposta vincente risolverà il problema genericamente, o porterà una maggiore comprensione del problema, non vedo l'ora di ricevere ogni tipo di risposta!

    
posta JOG 27.01.2015 - 12:19
fonte

0 risposte

Leggi altre domande sui tag