лучший подход для разработки веб-сервиса для отдыха с двоичными данными, которые будут использоваться браузером
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