Come restituire gli URL delle immagini caricate dall'API REST senza attendere l'elaborazione?

0

Considera un social network in cui gli utenti caricano le loro immagini (copertina, profilo, ecc.). Ogni immagine deve avere dimensioni diverse (es: grande, piccola, supersmall ecc.)

Il caricamento viene eseguito da una richiesta JSON REST API che contiene il contenuto del file e alcuni metadati.

La risposta JSON è i diversi URL per ciascuna dimensione e l'app Web li utilizza immediatamente.

Obiettivo:

Voglio avere una risposta veloce (non elaborare l'immagine e creare tutte le dimensioni per poi restituire gli URL nella risposta API).

Problema: l'applicazione web mostra immediatamente le foto dopo la risposta api utilizzando gli URL restituiti, quindi adesso ho bisogno di restituire URL validi che contengono / restituiscono immagini.

PS: posso apportare modifiche sia nel back-end che nell'applicazione web client, quindi le soluzioni suggerite non dovrebbero essere limitate solo alle modifiche del back-end.

    
posta Kristi Jorgji 05.04.2018 - 11:48
fonte

2 risposte

3

Ogni risorsa ha un URI, che è necessario per identificare la risorsa. Questo è indipendente dal fatto che una risorsa sia effettivamente lì.

Che cosa significa per il tuo problema?

A seconda del tuo schema, puoi prevedere, dove verrà trovata l'immagine, dire user/1234567890/images/...

dove ... dipende da come vuoi fare riferimento alle immagini,

es. %codice%. Se l'utente carica 4 immagini, è possibile riservare (generare) solo 4 UUID nel DB, che verranno successivamente collegati alle immagini effettive. E se un utente interroga l'URI, la risposta HTTP-102 indica che si tratta di una risorsa valida, ma 945c6cc6-a062-468f-b436-9946019a3dfd.jpg (in questo caso il caricamento) non è ancora finito.

Il tuo frontend potrebbe eseguire il polling degli URI restituiti in un intervallo decente finché le immagini non saranno disponibili.

    
risposta data 06.04.2018 - 09:46
fonte
1

I want to have fast response (not to process the image (...) then to return the urls in the API response).

Problem: The web app shows immediately the photos after the api response by using the urls returned, so right now I need to return valid urls that contain/return images.

Dici di voler tornare immediatamente dopo aver caricato un'immagine (senza aspettare che venga elaborata), ma hai bisogno dell'URL per restituire alcuni dati validi. Bene, non c'è niente che puoi fare per avere i tuoi dati prima che siano lì (come puoi visualizzare qualcosa che non esiste?).

Ciò che puoi fare, tuttavia, è di restituire una sorta di valore di segnaposto e visualizzarlo invece dei dati finali desiderati. Quindi, quando i dati sono pronti, recuperarli e sostituire il segnaposto. Usare segnaposto è solo un modo per affrontare il tuo problema.

Un altro sarebbe ritardare la restituzione dell'URL fino a quando non avrai creato la prima immagine elaborata (ad esempio la più piccola), e restituirai un URL per mostrarlo per dare all'utente qualcosa mentre fai il pesante elaborazione in background.

Le applicazioni Web sono intrinsecamente asincrone e devi in qualche modo gestirle.

    
risposta data 06.04.2018 - 08:12
fonte

Leggi altre domande sui tag