web-dev-qa-db-fra.com

Quelle est la bonne façon de transférer des données binaires vers un service API HTTP REST?

Nous étendons notre HTTP REST pour permettre aux clients de télécharger une image (pour les besoins de cette question, en supposant des données binaires). Jusqu'à présent, nous n'avons autorisé que des chaînes dans nos paramètres d'API. un bon moyen de leur permettre de télécharger des données binaires? Serait-ce pour demander le formulaire encodé en base64? L'URL deviendrait-elle trop longue pour être gérée par le serveur Web?

Des suggestions/meilleures pratiques?

44
erotsppa

Envoyez simplement les données binaires telles quelles dans un corps POST, mais avec l'en-tête Content-Type approprié (par exemple image/jpeg) - je pense que c'est la manière la plus "RESTful".

(En général, en règle générale lors de la conception de services REST, plus vous travaillez avec le protocole HTTP tel quel au lieu d'essayer de superposer quelque chose d'inutile et de complexe comme base64, HTTP est le protocole RESTful ultime, et les types de contenu permettent différentes "représentations" dans "REpresentational State Transfer")

Une autre possibilité à garder à l'esprit est d'accepter les URL d'images au lieu de fichiers physiques réels. Cela rend plus difficile pour les applications autonomes, par exemple lire l'image sur le lecteur de l'utilisateur, mais faciliter les applications de type mashup où l'image peut être renvoyée sous forme d'URL à partir d'un autre service.

Vous pouvez bien sûr autoriser les deux options.

42
Eugene Osovetsky