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. Publicar un archivo y datos asociados en un servicio web RESTful preferiblemente como JSON
- 3. ¿Cómo prevenir CSRF en una aplicación RESTful?
- 4. Publicar datos en JsonP
- 5. Datos binarios en MySQL
- 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. Publicar datos con libcurl
- 16. ¿Aplicación RESTful en Google App Engine Java?
- 17. Convertir una imagen en datos binarios en javascript
- 18. RESTful estructura de datos patrones
- 19. Restricción única en una arquitectura RESTFul
- 20. ¿Se puede publicar una aplicación ClickOnce en Ubuntu?
- 21. Ventajas de publicar una aplicación en Android Market
- 22. Obteniendo datos binarios usando SqlDataReader
- 23. Cómo publicar aplicación de consola en ejecutable
- 24. socket.io streaming de datos binarios
- 25. leer datos binarios (de archivo) en una estructura
- 26. almacenamiento de datos binarios en mysql
- 27. Buscar cadena de caracteres en datos binarios
- 28. conversión rápida de datos binarios en Python
- 29. Insertar datos binarios en MySQL (sin PreparedStatement)
- 30. ¿Cómo interpretar datos binarios en C++?
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