2009-10-02 11 views
36

Stiamo estendendo la nostra API HTTP REST per consentire ai client di caricare immagini (ai fini di questa domanda, assumendo dati binari). Finora abbiamo consentito solo stringhe nei nostri parametri API. Qual è un buon modo per consentire loro di caricare dati binari? Sarebbe richiedere la forma codificata Base64? L'URL sarebbe troppo lungo per essere gestito dal server web?Qual è un buon modo per trasferire dati binari a un servizio API REST HTTP?

Eventuali suggerimenti/buone pratiche?

+0

Si potrebbe voler dare un'occhiata a http://stackoverflow.com/questions/1500744 –

+1

Perché stai usando i parametri URI? Tutto ciò che serve da loro può essere incapsulato nelle intestazioni delle richieste HTTP. – Gandalf

risposta

34

Basta inviare i dati binari così come sono in un corpo POST, ma con l'intestazione Content-Type appropriata (ad esempio image/jpeg) - Penso che questo sia il modo più "RESTful".

(In generale, come regola generale quando si progettano i servizi REST, più si lavora con il protocollo HTTP come-è invece di cercare di sovrapporre qualcosa di superfluo e complesso su di esso come base64, meglio è. l'ultimo protocollo RESTful e Content-Types consentono diverse "rappresentazioni" in "Trasferimento stato rappresentativo")

Un'altra possibilità da tenere a mente è l'accettazione di URL di immagini invece di file fisici reali. Ciò rende più difficile l'app standalone ad es. leggere l'immagine dall'unità dell'utente, ma semplificare le app di tipo mashup in cui l'immagine può essere restituita come un URL da un altro servizio.

È possibile consentire entrambe le opzioni, ovviamente.

+1

Quale tipo di contenuto dovremmo usare per i dati binari personalizzati che non sono immagini jpeg? – Pacerier

+1

@Pacerier controlla http://en.wikipedia.org/wiki/Internet_media_type –

+0

dovresti aggiungere l'intestazione Content-Length sulla risposta quando le persone cercano di recuperare l'immagine? – Cmag

Problemi correlati