meilleure approche pour la conception d'un service web rest avec des données binaires à être consommés à partir du navigateur

Je suis l'élaboration d'un json rest web services qui seront consommés à partir d'une seule page web app construit avec backbone.js

Cette API permettra aux consommateurs de télécharger des fichiers liés à une entité, à l'instar des rapports pdf liées à un projet

Googler autour et en faisant quelques recherche à débordement de pile je suis venu avec ces approches possibles:

Première approche: des données encodées en base64 champ

POST: /api/projects/234/reports
{
  author: 'xxxx',
  abstract: 'xxxx',
  filename: 'xxxx',
  filesize: 222,
  content: '<base64 encoded binary data>'
}

Deuxième approche: multipart post de formulaire:

POST: /api/projects/234/reports
{
  author: 'xxxx',
  abstract: 'xxxx',
}

comme une réponse, je vais obtenir un id de rapport, et avec qui je délivre un autre post

POST: /api/projects/234/reports/1/content
enctype=multipart/form-data

et puis il suffit d'envoyer les données binaires

(avoir un coup d'oeil à ceci: https://stackoverflow.com/a/3938816/47633)

Troisième approche: après les données binaires d'une ressource distincte et enregistrer le href

j'ai d'abord générer une clé aléatoire sur le client et poste le contenu binaire il y

POST: /api/files/E4304205-29B7-48EE-A359-74250E19EFC4
enctype=multipart/form-data

et puis

POST: /api/projects/234/reports
{
  author: 'xxxx',
  abstract: 'xxxx',
  filename: 'xxxx',
  filesize: 222,
  href: '/api/files/E4304205-29B7-48EE-A359-74250E19EFC4'
}

(voir ceci: https://stackoverflow.com/a/4032079/47633)

Je voulais juste savoir si il y a d'autres approches que je pouvais utiliser, les avantages/inconvénients de chacun, et si il n'y a de toute façon de traiter avec ce genre d'exigences

le gros con que je vois pour la première approche, c'est que je dois charger complètement et base64 encode le fichier sur le client

quelques ressources utiles:

InformationsquelleAutor opensas | 2013-01-19