El mejor enfoque para diseñar un servicio web de descanso con datos binarios para ser consumidos desde el navegador

Estoy desarrollando un servicio web json rest que se consumirá desde una aplicación de página web única creada con backbone.js

Esta API permitirá que el consumidor cargue archivos relacionados con alguna entidad, como informes en pdf relacionados con un proyecto

Buscando en Google y haciendo algunas investigaciones en el desbordamiento de pila vine con estos posibles enfoques:

Primer enfoque: campo de datos codificados en base64

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

Segundo acercamiento: post multiparte formulario:

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

como respuesta obtendré un ID de informe, y con eso emitiré otra publicación

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

y luego simplemente enviar los datos binarios

(Echa un vistazo a esto:https://stackoverflow.com/a/3938816/47633)

Tercer enfoque: publique los datos binarios en un recurso separado y guarde el href

primero genero una clave aleatoria en el cliente y publico el contenido binario allí

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

y entonces

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

(mira esto:https://stackoverflow.com/a/4032079/47633)

Solo quería saber si hay algún otro enfoque que pueda usar, las ventajas y desventajas de cada uno, y si hay alguna manera establecida de lidiar con este tipo de requisitos.

La gran desventaja que veo del primer enfoque es que tengo que cargar completamente y codificar en base64 el archivo en el cliente.

algunos recursos útiles:

Publicar datos binarios en una aplicación RESTful¿Cuál es una buena manera de transferir datos binarios a un servicio de API REST HTTP?¿Cómo subo un archivo con metadatos usando un servicio web REST?¿Mala idea de transferir una gran carga útil utilizando servicios web?https://stackoverflow.com/a/5528267/47633

Respuestas a la pregunta(3)

Su respuesta a la pregunta