Я разрабатываю веб-сервис json rest, который будет использоваться из одного приложения веб-страницы, созданного с помощью backbone.js
Этот API позволит пользователю загружать файлы, связанные с каким-либо объектом, например, в виде PDF-отчетов, связанных с проектом
Перейдя по ссылкам и выполняя некоторые исследования при переполнении стека, я пришел с этими возможными подходами:
Первый подход: поле данных с кодировкой base64
POST: /api/projects/234/reports
{
author: 'xxxx',
abstract: 'xxxx',
filename: 'xxxx',
filesize: 222,
content: '<base64 encoded binary data>'
}
Второй подход: многостраничное сообщение:
POST: /api/projects/234/reports
{
author: 'xxxx',
abstract: 'xxxx',
}
в качестве ответа я получу идентификатор отчета, и с этим я выведу другой пост
POST: /api/projects/234/reports/1/content
enctype=multipart/form-data
а затем просто отправьте двоичные данные
(посмотрите на это: qaru.site/info/15447/...)
Третий подход: отправьте двоичные данные на отдельный ресурс и сохраните href
сначала я генерирую случайный ключ на клиенте и размещаю там двоичный контент
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'
}
(см. это: qaru.site/info/209173/...)
Я просто хотел узнать, есть ли какой-либо другой подход, который я мог бы использовать, плюсы/минусы каждого, и если есть какой-либо установленный способ справиться с такими требованиями
большой con, который я вижу в первом подходе, заключается в том, что мне приходится полностью загружать и base64 кодировать файл на клиенте
некоторые полезные ресурсы: