Sto lavorando a un'applicazione web RESTful (Django + Piston). La richiesta POST invia i dati codificati con Json all'applicazione web. Funziona bene per tutte le mie tabelle di database di solo testo, ma ho anche una tabella che memorizza i file di testo e binari. Qual è il modo migliore per inviare testo e dati binari a un'applicazione RESTful?Inviare dati binari a un'applicazione RESTful
risposta
È possibile utilizzare Base64 per codificarlo e inviarlo come stringa in un messaggio JSON oppure è possibile POST o PUT il file binario come risorsa separata e fare riferimento ad esso tramite ID o URL nel messaggio JSON. Quest'ultimo approccio è una sorta di canale dati fuori banda che è abbastanza comune nei protocolli basati su XML (ad esempio, la chat vocale con XMPP).
Si potrebbe anche abbastanza facilmente sostenere un modello ibrido, in cui:
- Una piccola immagine viene inviata come
{"base64":"OGZmNjJmOWNhYzFlODE0NDBjYmYzNjhjYz..."}
; - Un'immagine grande viene caricata come riferimento,
{"ref":"http://myserver.com/bits/E4304205-29B7-48EE-A359-74250E19EFC4"}
.
Per evitare la doppia-POST necessaria per i binari con riferimenti esterni, si potrebbe progettare un protocollo che permette di JSON e roba binario da miscelare in un singolo trasferimento. Ma è improbabile che il guadagno incrementale ricompensi adeguatamente questo livello di impegno.
Infine, dal punto di vista del design, attenersi alla soluzione semplice fino a quando non diventa un problema.
- 1. Utilizzo di Pyserial per inviare dati binari
- 2. Come inviare dati binari con socket.io?
- 3. Inviare dati a JsonP
- 4. Come inviare dati binari tramite metodo JQuery Ajax PUT
- 5. Come inviare dati formali multipart binari come base64?
- 6. socket.io streaming dati binari
- 7. AngularJS: inviare dati a REST API esterno
- 8. PUT senza dati, è RESTful?
- 9. Come inviare token sicuro dal servizio RESTful?
- 10. Come inviare dati binari da un server socket.io Node.js a un client browser?
- 11. Messaggi dati binari Websocket (ArrayBuffer)
- 12. Dati git e binari
- 13. archivio dati binari mysql
- 14. Dati binari POST Python
- 15. Invia dati binari da Android in Javascript
- 16. Come inviare i dati a ASP.NET HttpHandler?
- 17. SignalR: Come inviare dati a IConnected.Connect()
- 18. jetty websockets invia dati binari (immagine)
- 19. L'invio di dati binari su http
- 20. cURL Dati binari e dati modulo
- 21. Perl e MongoDB dati binari
- 22. Registrazione dati binari con arricciatura
- 23. Dati binari su terminale seriale
- 24. Leggi dati binari da Console.In
- 25. Leggere dati binari in panda
- 26. Come posso inviare dati binari in formato multipart html in una codifica basata su caratteri?
- 27. Come inviare dati binari tramite una richiesta HTTP utilizzando una gemma Ruby?
- 28. Come inviare dati nascosti
- 29. E ++ equivalente a stringa di STL per dati binari
- 30. Conversione da dati binari a controllo immagine in ASP.NET
Quindi, se non voglio codificare il binario in una stringa, ho bisogno di due richieste POST dal lato client, giusto. Prima un'applicazione/json con i campi di testo e poi una multipart/form-data per inviare il binario insieme all'ID dei dati a cui appartiene. È corretto? – pinky0x51
@ pinky0x51: Sì. Ho modificato la mia risposta per coprire questo problema. –
@ pinky0x51 potresti usare il post multiparte sin dall'inizio mandando json come una parte e il file binario come altro – kqr