Gestisce lato server / lato client quando per mostrare le informazioni mancanti come segnaposto

2

Ho una tabella di database che memorizza i dettagli di Incident. Ogni incidente può avere un'immagine salvata per questo. Ci sono alcuni incidenti che non avranno un'immagine per questo.

Ho un'API che tira l'immagine per un dato Incidente. Ho un problema con la gestione dell'API nel caso in cui un Incidente non abbia l'immagine.

Qual è l'approccio migliore per gestire questo (e perché :))?:

  1. Dire in anticipo al cliente quale incidente ha l'immagine e quali no. Quindi il client che chiama l'API dovrebbe chiamarlo solo quando c'è un'immagine per l'Incidente.
  2. Invio di un messaggio di errore predefinito come risultato.
  3. Invio di un segnaposto generico come immagine al client quando un'immagine non è disponibile per l'incidente.
posta manas 20.12.2014 - 00:31
fonte

3 risposte

1

Preferirei l'opzione 1.

Ciò comporterebbe l'espansione della definizione corrente di un Incidente per contenere un flag hasImage in modo che il client possa decidere per quali Incidenti chiamare l'API di recupero immagine (ad esempio getIncidentImage(...) )

Thos riguarda la modellazione e la progettazione dell'API.

Come altre persone hanno menzionato, da una prospettiva UX, potresti voler includere un'immagine segnaposto nell'interfaccia utente quando un Incidente ne manca uno. Se dipendesse da me, è possibile recuperare questa immagine segnaposto invocando un metodo getPlaceholderImage() nell'API di immagine e non il metodo getIncidentImage(...) . Questo perché, a mio avviso, la decisione di utilizzare un'immagine segnaposto quando manca un'immagine Incidente è una preoccupazione dell'interfaccia utente e, pertanto, l'API dell'immagine non dovrebbe esserne a conoscenza.

Inoltre, come ho accennato nel mio precedente commento, se è perfettamente normale che un Incidente per non abbia un'immagine associata, ti consiglio di non restituire un errore quando chiami il tuo messaggio getIncidentImage(...) . Un risultato vuoto dovrebbe essere sufficiente ed è meno confuso per gli utenti API.

    
risposta data 20.12.2014 - 02:48
fonte
1

Dipende dalla tecnologia che usi. Normalmente in questo caso restituiresti un Type che descrive la possibilità di un'immagine. In alcune lingue questi tipi sono incorporati ( Option in Scala, Maybe in Haskell). In altri puoi scriverli o usare una libreria che include questi tipi. Per javascript (che può essere quello che puoi usare, immagino), puoi trovare una buona spiegazione e implementazione qui .

Inoltre dovresti - come hai detto - avere un metodo per chiedere, se esiste un'immagine.

    
risposta data 20.12.2014 - 00:39
fonte
1

Vorrei usare l'opzione

  1. Modifica l'API in modo che ogni richiesta di un'immagine restituisca l'immagine + un'informazione sullo stato. Se non ci sono immagini, si restituisce un flusso di 0 byte per l'immagine e uno stato come "nessuna immagine disponibile".

Quindi l'utente dell'API ha bisogno solo di un roundtrip per recuperare le informazioni complete, l'operazione è atomica, non si restituisce un errore per un'operazione valida e non si spreca larghezza di banda inviando gli stessi segnaposti immagine la linea più e più volte.

Se l'utente dell'API desidera visualizzare un segnaposto (fisso), è libero di farlo, ma deve essere disaccoppiato dall'API stessa.

    
risposta data 20.12.2014 - 08:14
fonte

Leggi altre domande sui tag