лучший подход для разработки веб-сервиса для отдыха с двоичными данными, которые будут использоваться браузером

m разработка веб-службы json rest, которая будет использоваться из одного веб-приложения, созданного с помощью backbone.js

Этот API позволит потребителю загружать файлы, связанные с какой-либо сущностью, например, отчеты в формате PDF, связанные с проектом.

Погуглив и изучив переполнение стека, я пришел с этими возможными подходами:

Первый подход: поле кодированных данных base64

POST: /api/projects/234/reports
{
  author: 'xxxx',
  abstract: 'xxxx',
  filename: 'xxxx',
  filesize: 222,
  content: ''
}

Второй подход: многочастная форма сообщения:

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

в ответ яЯ получу идентификатор отчета, и с этим я опубликую другой пост

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

а затем просто отправить двоичные данные

(Посмотри на это:https://stackoverflow.com/a/3938816/47633)

Третий подход: разместить двоичные данные на отдельном ресурсе и сохранить ссылку

сначала я генерирую случайный ключ на клиенте и выкладываю туда двоичный контент

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

а потом

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

(видеть это:https://stackoverflow.com/a/4032079/47633)

Я просто хотел знать, есть лилюбой другой подход, который я мог бы использовать, плюсы / минусы каждого, и если естьЛюбой установленный способ справиться с такого рода требованиями

большой недостаток, который я вижу в первом подходе, заключается в том, что я должен полностью загрузить и Base64 кодировать файл на клиенте

некоторые полезные ресурсы:

Отправка двоичных данных в приложение RESTfulЧто такое хороший способ передачи двоичных данных в службу HTTP REST API?Как загрузить файл с метаданными с помощью веб-службы REST?Плохая идея для передачи большой полезной нагрузки с помощью веб-сервисов?https://stackoverflow.com/a/5528267/47633

Ответы на вопрос(3)

Ваш ответ на вопрос