najlepsze podejście do projektowania spoczynkowej usługi internetowej z danymi binarnymi, które mają być pobierane z przeglądarki

Zajmuję się tworzeniem usługi internetowej odpoczynku json, która zostanie wykorzystana z jednej aplikacji internetowej zbudowanej z backbone.js

Ten interfejs API umożliwi konsumentom przesyłanie plików związanych z pewną jednostką, takich jak raporty PDF związane z projektem

Poszukując i wykonując jakieś badania nad przepełnieniem stosu, przyszedłem z tymi możliwymi podejściami:

Pierwsze podejście: pole danych zakodowane w base64

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

Drugie podejście: wieloczęściowy post:

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

w odpowiedzi otrzymam identyfikator raportu, a wraz z nim wydam inny post

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

a następnie wyślij dane binarne

(Zerknij na to:https://stackoverflow.com/a/3938816/47633)

Trzecie podejście: opublikuj dane binarne w osobnym zasobie i zapisz href

najpierw generuję losowy klucz u klienta i umieszczam tam zawartość binarną

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

i wtedy

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

(Zobacz:https://stackoverflow.com/a/4032079/47633)

Chciałem tylko wiedzieć, czy jest jakieś inne podejście, które mógłbym wykorzystać, zalety / wady każdego z nich i czy istnieje jakikolwiek ustalony sposób radzenia sobie z tego rodzaju wymaganiami

Wielkim argumentem, jaki widzę w pierwszym podejściu, jest to, że muszę w pełni załadować i zakodować plik base64 na kliencie

kilka przydatnych zasobów:

Prześlij dane binarne do aplikacji RESTfulJaki jest dobry sposób przesyłania danych binarnych do usługi API REST HTTP?Jak przesłać plik z metadanymi za pomocą usługi internetowej REST?Zły pomysł na przeniesienie dużego ładunku za pomocą usług internetowych?https://stackoverflow.com/a/5528267/47633

questionAnswers(3)

yourAnswerToTheQuestion