Dovrei aggiungere una chiave agli elementi della mia risposta API REST?

4

Ho un endpoint API REST che assomiglia alla risposta JSON:

{
    "products": [
        {"id": 1040, "price": 2.95, ...}
        {"id": 4545, "price": 3.95, ...}
    ]
}

Uno dei miei colleghi mi ha suggerito di aggiungere una chiave per ciascun elemento nell'elenco. Ha detto che renderebbe più facile sfogliare l'API. L'esempio precedente diventerebbe:

{
    "products": {
        "1040": {"id": 1040, "price": 2.95, ...}
        "4545": {"id": 4545, "price": 3.95, ...}
    }
}

Non renderlo dannoso per le prestazioni della mia API e posso capire come dovrebbe migliorare la navigabilità. Dovrei farlo? C'è qualche esempio di API pubblica che fa qualcosa di simile?

    
posta Renan Ivo 25.07.2014 - 20:10
fonte

1 risposta

4

Dipende.

La risposta è una risposta a una query che è più simile a GetListOfProducts() o GetProductIndex() ? Il risultato è inteso per essere iterato o utilizzato come ricerca per singolo prodotto da id ? L'ordinamento è significativo?

Se è più simile a GetListOfProducts() con implicazioni dell'ordine di ordinamento e / o all'intenzione dell'iterazione, come mostrare i record in una tabella, attenersi a ciò che si ha. È probabilmente banale per i tuoi utenti API cercare o indicizzare gli articoli.

Se è più simile a GetProductIndex() e deve essere usato come un indice , e se l'ordinamento non è importante, considera l'invio nel 2 ° modulo. Ma anche in questo caso, ricorda che probabilmente è banale indicizzare (o search() o filter() ) l'array lato client. Quindi, sarei un po 'titubante: considera se sia più difficile per il cliente / consumatore indicizzare e cercare un elenco o che il server inietti un ordinamento (e il client per rispettare quell'ordine) se necessario su un insieme di proprietà che non ha ordinamento inerente.

    
risposta data 25.07.2014 - 21:01
fonte

Leggi altre domande sui tag