Modo RESTful per ottenere una differenza in un elenco di entità

2

Ho un endpoint REST che ottiene un elenco di clienti in un formato JSON.

GET / webservice / customers

{
    "count" : 80267
    "customers" : [
        {
            "id": 1,
            "name": "John Doe",
            "email" : "[email protected]"
        },
        {
            "id": 2,
            "name": "Michael Bay",
            "email" : "[email protected]"
        }
    ]
}

Il mio cliente salva in un database i clienti che carica, ma per aggiornare questo elenco è necessario caricare tutti i dati ogni volta. A volte posso avere più di 100.000 entità , il che è molto lento e consumante.

Sto cercando un modo per ottenere solo i dati che sono stati modificati dall'ultimo aggiornamento.

Ho trovato alcune risposte come If-Modified-Since o il Etag sistema, ma se è necessario un nuovo aggiornamento, il webservice conserva tutti i dati.

Ho pensato a un sistema in cui invio il timestamp dell'ultimo aggiornamento in un'intestazione o un parametro URL e l'endpoint REST restituisce solo le entità nuove o aggiornate e gli ID delle entità che sono state eliminate dall'ultimo aggiornamento .

Ma suppongo che molte persone intelligenti abbiano avuto questo problema prima di me e mi chiedo se esiste un metodo comune per risolvere questo problema.

PS: non ho bisogno del paging in quanto i dati vengono utilizzati per contare i clienti dopo l'applicazione di alcuni filtri sul set di dati.

    
posta maxime 17.07.2017 - 19:07
fonte

1 risposta

6

Sì, vuoi supportare il filtraggio dell'endpoint entro una data. Qualcosa come

GET /webservice/customers?since=XXX
Le intestazioni

If-Modified-Since e If-None-Match riguardano il ritorno o la mancata restituzione di una risorsa. Vuoi filtrare le risposte dal tuo endpoint.

    
risposta data 17.07.2017 - 19:55
fonte

Leggi altre domande sui tag