Unisci due diverse chiamate API in Uno

7

Ho due app diverse nel mio progetto di Django. Uno è "commento" e un altro è "file". Un commento potrebbe salvare alcuni file allegati ad esso.

Il modo attuale di creare un commento con gli allegati consiste nel fare due chiamate API. Il primo crea un commento effettivo e risponde con l'ID del commento che funge da chiave esterna per i file. Quindi, per ogni file, viene effettuata una nuova richiesta con l'ID del commento.

Tieni presente che il file è un'app generica che può essere utilizzata anche con altre app. Qual è il modo più pulito di fare questo in una chiamata API?

Voglio avere questo come una singola chiamata API perché sono in una situazione in cui ho bisogno di inviare all'utente un messaggio di posta elettronica con tutti i file come allegato quando viene fatto un commento. So che l'accodamento è il modo ideale per farlo. Ma non ho la libertà di aggiungere il comando al nostro stack ora. Quindi questo era l'unico modo in cui potevo pensare.

    
posta dhilipsiva 07.10.2013 - 09:03
fonte

1 risposta

1

Un modo semplice per risolvere questo problema senza dover aggiungere l'accodamento è quello di invertire l'ordine delle chiamate di metodo. Piuttosto che creare commenti piuttosto che allegare i file, è necessario prima creare i file, che restituiscono l'id di file, quindi inviare gli id di file nella richiesta di creazione dei commenti nei campi degli allegati. In questo modo, inoltre, è possibile allegare un singolo file a più commenti, senza ricaricare nuovamente, o per consentire al server di rilevare automaticamente i caricamenti duplicati e restituire lo stesso ID file.

Un altro modo possibile per farlo è aggiungere un campo di stato. Quando crei un commento per la prima volta, dovrebbe essere in stato Bozza, che non invia email. Quando hai finito di allegare i file, invia un'altra richiesta per passare lo stato dei commenti a Pubblicato, che dovrebbe inviare e-mail con gli allegati fino a quel momento.

    
risposta data 17.04.2017 - 03:09
fonte

Leggi altre domande sui tag