Progettazione dell'API restful: la soluzione migliore riguarda la modifica dei dati subito dopo il ritorno dei dati di impaginazione?

0

Il client chiama api per interrogare l'elenco dei prodotti ordinati per il numero di visualizzazione di pagina in ordine decrescente. A volte capita casi problematici: il client A invia una richiesta = > risposta del server, la lista dei primi 5 articoli ha il maggior numero di visualizzazioni di pagina sulla prima pagina

  1. Articolo A
  2. Articolo B
  3. Articolo C
  4. Articolo D
  5. Articolo E

Subito dopo la prima pagina di risposta, l'articolo G ha aumentato drasticamente il pageview e ottenuto il quinto rango. Di conseguenza, l'articolo E declasserà e passerà alla seconda pagina. Se la seconda pagina risponde ancora all'articolo E, è stata apparsa completamente due volte sul lato client.

Qual è la soluzione migliore sia per l'esperienza utente che per la progettazione di API?

    
posta Binh Le 07.05.2018 - 16:59
fonte

1 risposta

1

Alla richiesta iniziale, prova a scattare un'istantanea di tutte le righe restituite (magari i loro ID memorizzati in alcune tabelle insieme all'ID della richiesta), quindi nelle richieste di pagine successive, tira le informazioni sulla base di quelle righe iniziali.

Questo significa che hai essenzialmente una "richiesta", i cui dati sono memorizzati separatamente dai sistemi "live" e le pagine aggiuntive richieste provengono dai dati "obsoleti".

Questo è bello perché il cliente ottiene buoni rendimenti di integrità, ma forse non aggiornato al 100%. Questo può essere un inconveniente perché ti costringe a interrogare l'intero set di risultati all'inizio, indipendentemente dal fatto che stai facendo impaginare il cliente.

L'alternativa è informare il cliente che i dati possono essere modificati tra le richieste di impaginazione. L'approccio preferito dipenderà dalla situazione, alla quale non si può veramente rispondere qui.

Indipendentemente dal modo in cui lo si implementa, assicurati di includerlo nella documentazione dell'API in modo che il cliente possa pianificare di gestirlo in un modo o nell'altro.

    
risposta data 07.05.2018 - 17:51
fonte

Leggi altre domande sui tag