Mam serwer i muszę przesłać pliki wraz z niektórymi polami od klienta do serwera. Obecnie korzystam ze standardowej wieloczęściowej/formularza danych.Czy korzystasz z multipart/form-data lepiej niż JSON + Base64?
Zauważyłem jednak, że używanie wieloczęściowych/formularzy danych nie jest idealne. Obiekty na moim serwerze mogą zawierać inne obiekty zagnieżdżone w nich, a zatem są reprezentowane jako obiekt JSON z innymi osadzonymi obiektami JSON.
Chciałbym, aby klient zaczął tworzyć żądania POST/PUT przy użyciu reprezentacji JSON dokładnie takiej, jakiej oczekiwałby w żądaniu GET dla serwera, w trybie REST-ful. W ten sposób nie muszę spłaszczać pól, które mogą być zagnieżdżone w kilku warstwach obiektu JSON w celu użycia danych wieloczęściowych/formularzy.
Problem polega na tym, że JSON nie reprezentuje danych binarnych. Multipart/form-data nie ma sposobu na reprezentowanie pól zagnieżdżonych w wartościach innych pól. Ale znacznie lepiej radzi sobie z przesyłaniem plików.
Nie rozumiem, jak to zaprojektować. Czy mam po prostu przesłać klientowi JSON z polami zakodowanymi w base64 i przyjąć 25% trafień? Czy powinienem mieć reprezentowany obiekt JSON jako pewną zmienną "json" w żądaniu Multipart/dane formularza, a pliki binarne powinny być przesłane jako inna zmienna?
Interesujące jest ostatnie podejście promujące oddzielne połączenia (jedno dla obrazu wieloczęściowego i drugie dla danych JSON). Jedynym problemem są dwa wywołania interfejsu API zamiast jednego. Oczywiście, ten handel jest specyficzny dla aplikacji. –