Estoy trabajando en una aplicación web RESTful (Django + Piston). La solicitud POST envía datos codificados con Json a la aplicación web. Esto funciona bien para todas las tablas de base de datos solo de texto, pero también tengo una tabla que almacena archivos de texto y binarios. ¿Cuál es la mejor forma de publicar texto y datos binarios en una aplicación RESTful?Publicar datos binarios en una aplicación RESTful
Respuesta
Puede codificar Base64 y enviarlo como una cadena en un mensaje JSON, o puede POSTAR o PONER el binario como un recurso separado y hacer referencia a él por ID o URL en el mensaje JSON. El último enfoque es un tipo de canal de datos fuera de banda que es bastante común en los protocolos basados en XML (por ejemplo, chat de voz usando XMPP).
Incluso podría fácilmente soportar un modelo híbrido, según el cual:
- Una pequeña imagen se envía como
{"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."}
; - Una imagen grande se carga como referencia,
{"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}
.
Para evitar el doble POST necesario para binarios referenciados externamente, puede diseñar algún protocolo que permita combinar cosas JSON y binarias en una sola transferencia. Pero es poco probable que la ganancia incremental recompense adecuadamente ese nivel de esfuerzo.
Finalmente, desde una perspectiva de diseño, adhiérase a la solución simple hasta que se convierta en un problema.
- 1. ¿Cómo puedo publicar datos binarios html multipart en una codificación basada en caracteres?
- 2. ¿Cómo prevenir CSRF en una aplicación RESTful?
- 3. Publicar un archivo y datos asociados en un servicio web RESTful preferiblemente como JSON
- 4. Datos binarios en MySQL
- 5. Publicar datos en JsonP
- 6. cURL Datos binarios y datos de formulario
- 7. Herramienta para publicar json en una url
- 8. Analizando datos binarios en C?
- 9. Git y datos binarios
- 10. BlobBuilder arruina datos binarios
- 11. iPhone escribiendo datos binarios
- 12. DbUnit y datos binarios
- 13. StreamReader y datos binarios
- 14. Envío de datos binarios
- 15. ¿Aplicación RESTful en Google App Engine Java?
- 16. Publicar datos con libcurl
- 17. Convertir una imagen en datos binarios en javascript
- 18. RESTful estructura de datos patrones
- 19. Restricción única en una arquitectura RESTFul
- 20. Obteniendo datos binarios usando SqlDataReader
- 21. socket.io streaming de datos binarios
- 22. leer datos binarios (de archivo) en una estructura
- 23. Ventajas de publicar una aplicación en Android Market
- 24. ¿Se puede publicar una aplicación ClickOnce en Ubuntu?
- 25. almacenamiento de datos binarios en mysql
- 26. Buscar cadena de caracteres en datos binarios
- 27. conversión rápida de datos binarios en Python
- 28. Insertar datos binarios en MySQL (sin PreparedStatement)
- 29. ¿Cómo interpretar datos binarios en C++?
- 30. Cómo publicar aplicación de consola en ejecutable
Así que, si no quiero codificar el binario en una cadena, necesito dos solicitudes POST desde el lado del cliente, a la derecha. Primero una aplicación/json con los campos de texto y una multipart/form-data para enviar el binario junto con el ID de los datos a los que pertenece. ¿Es esto correcto? – pinky0x51
@ pinky0x51: Sí. He modificado mi respuesta para cubrir este problema. –
@ pinky0x51 puede usar publicaciones de varias partes desde el principio enviando json como una parte y archivo binario como otros – kqr