Fusionar dos llamadas API diferentes en One

7

Tengo dos aplicaciones diferentes en mi proyecto de django. Uno es "comentario" y el otro es "archivos". Un comentario podría guardar algún archivo adjunto.

La forma actual de crear un comentario con archivos adjuntos es haciendo dos llamadas a la API. El primero crea un comentario real y responde con el ID de comentario que sirve como clave externa para los Archivos. Luego, para cada archivo, se realiza una nueva solicitud con el ID de comentario.

Tenga en cuenta que el archivo es una aplicación genérica, que también se puede usar con otras aplicaciones. ¿Cuál es la forma más limpia de convertir esto en una llamada a la API?

Quiero tener esto como una sola llamada a la API porque me encuentro en una situación en la que debo enviar al usuario un correo electrónico con todos los archivos adjuntos cuando se realiza un comentario. Sé que hacer cola es la forma ideal de hacerlo. Pero ahora no tengo la libertad de agregar colas a nuestra pila. Así que esta era la única forma en que podía pensar.

    
pregunta dhilipsiva 07.10.2013 - 09:03

1 respuesta

1

Una forma directa de resolver esto sin tener que agregar colas es revertir el orden de las llamadas a métodos. En lugar de crear comentarios en lugar de adjuntar los archivos, primero debe crear los archivos, que devuelven la identificación del archivo, y luego enviar las identificaciones del archivo en la solicitud de creación de comentarios en los campos adjuntos. Si lo hace de esta manera, también se puede adjuntar un solo archivo a varios comentarios, sin volver a cargar, o para que el servidor detecte automáticamente las cargas duplicadas y devuelva la misma ID de archivo.

Otra forma posible de hacer esto es agregar un campo de estado. Cuando crea un comentario por primera vez, debe estar en estado Borrador, que no envía correos electrónicos. Cuando haya terminado de adjuntar los archivos, envíe otra solicitud para pasar el estado del comentario a Publicado, que debería enviar correos electrónicos con los archivos adjuntos hasta ese momento.

    
respondido por el Lie Ryan 17.04.2017 - 03:09

Lea otras preguntas en las etiquetas