Come implementare l'ordinamento globale sugli elementi letti da un'API impaginata basata su chiavi che sono disponibili solo per il client?

0

Ho un'API che restituisce un elenco di aziende come JSON, strutturato in modo simile a questo:

[
    {
      "id": 1,
      "name": "FooCorp"
    },
    {
      "id": 2,
      "name": "Bar Industries"
    }
   // etc.
]

Questa API è chiamata da un'altra applicazione che calcola l'analisi sulle aziende. L'applicazione client ha il proprio database separato in cui memorizza queste informazioni. Quando chiama l'API, cerca i dati che ha su una società, crea un nuovo oggetto combinandoli con le informazioni di base ottenute dall'API e esegue il rendering di una pagina per visualizzare questo risultato combinato.

Devo essere in grado di ordinare l'elenco di oggetti combinati in base al punteggio di integrità, che è qualcosa che viene aggiunto sul lato client. Sfortunatamente i risultati dell'API sono impaginati dall'ID del database, quindi se leggo solo una pagina dell'API, aggiungo i punteggi di integrità e ordino, non ottengo un ordinamento globale su tutti gli elementi, solo gli elementi su quella pagina. Per esempio. Potrei leggere i risultati 1-100 dall'API e ordinare, e forse il primo elemento, con il punteggio più basso di salute, sarebbe la compagnia numero 54 con punteggio di salute 38. Ma la società # 107, nella pagina successiva dei risultati, potrebbe avere salute punteggio 22, quindi dovrebbe essere stato effettivamente sulla prima pagina dei risultati se ordinato per punteggio di salute, ma non lo saprò fino a quando non avrò letto la seconda pagina dei risultati.

Posso apportare modifiche all'API, ma l'analisi deve rimanere nell'applicazione client, quindi non posso fare la soluzione più semplice per ordinare tutto sull'API. Sarebbe troppo lavoro spostare l'analisi e violerebbe le intenzioni delle due applicazioni poiché quella con l'API è rivolta al cliente e il client è puramente interno. Inoltre, non posso fare in modo che l'API restituisca il set di dati completo al client poiché è troppo grande e i risultati vengono visualizzati direttamente da un utente, quindi è necessario che sia abbastanza reattivo. In base a questi vincoli, come posso ottenere un ordinamento globale in base al punteggio di integrità, che è solo sul client?

    
posta Torisuda 21.05.2017 - 18:52
fonte

0 risposte

Leggi altre domande sui tag