2009-10-02 10 views
36

Wir erweitern unsere HTTP-REST-API, damit Clients Bilder hochladen können (für diese Frage unter der Annahme von Binärdaten). Bisher haben wir in unseren API-Parametern nur Strings erlaubt. Was ist eine gute Möglichkeit, um Binärdaten hochladen zu können? Würde es sein, das base64-kodierte Formular anzufordern? Würde die URL für den Webserver zu lang werden?Was ist eine gute Möglichkeit, binäre Daten an einen HTTP-REST-API-Dienst zu übertragen?

Irgendwelche Vorschläge/Best Practices?

+0

Sie können einen Blick auf http://stackoverflow.com/questions/1500744 werfen –

+1

Warum verwenden Sie URI-Parameter? Alles, was Sie von ihnen brauchen, kann in ihren HTTP-Request-Headern gekapselt werden. – Gandalf

Antwort

34

Senden Sie einfach die binären Daten unverändert in einem POST-Textkörper, aber mit dem entsprechenden Content-Type-Header (z. B. image/jpeg) - ich denke, dies ist die "RESTful" -Methode.

(Im Allgemeinen gilt, dass bei der Entwicklung von REST-Diensten mehr mit dem HTTP-Protokoll zu arbeiten ist, anstatt zu versuchen, etwas unnötiges und komplexes darüber wie base64 zu überlagern, desto besser. HTTP ist das ultimative RESTful-Protokoll, und Inhaltstypen erlauben verschiedene "Repräsentationen" in "REpresentational State Transfer")

Eine andere Möglichkeit zu beachten, akzeptiert Bild-URLs anstelle von tatsächlichen physischen Dateien. Dies erschwert es Standalone-Anwendungen, die z. Lesen Sie das Image auf dem Laufwerk des Benutzers, aber erleichtern Sie Apps vom Mashup-Typ, bei denen das Bild möglicherweise als URL von einem anderen Dienst zurückgegeben wird.

Sie können beide Optionen natürlich zulassen.

+1

Welchen Inhaltstyp sollten wir für benutzerdefinierte Binärdaten verwenden, die keine JPEG-Bilder sind? – Pacerier

+1

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

+0

sollten Sie die Content-Length-Header auf die Antwort hinzufügen, wenn Leute versuchen, das Bild abzurufen? – Cmag

Verwandte Themen