/ / Wyślij obraz i dane JSON w jednym pliku Node.js + odpowiedź ekspresowa - javascript, json, node.js, rest, express

Wysyłaj dane obrazu i JSON w pojedynczej odpowiedzi Node.js + Express - javascript, json, node.js, rest, express

Tworzę interfejs API sieci Web przy użyciu Node.js i Express i zamierzam użyć pojedynczej odpowiedzi, aby jednocześnie zwrócić obraz i dane JSON. Widziałem rozwiązanie określające nagłówki: https://stackoverflow.com/a/18864738/1703565 ale nie chcę wykonywać dwóch żądań get. Jak to osiągnąć?

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz zwrócić obraz jako normalny obraztreść odpowiedzi, a następnie ustaw plik cookie sesji z tym samym żądaniem. Plik cookie sesji zawierałby dane JSON. Po załadowaniu obrazu możesz pobrać dane JSON z pliku cookie za pomocą javascript.

Działa to we wszystkich przeglądarkach. Jedynym ograniczeniem będzie rozmiar JSON, który możesz zwrócić. Wygląda na to, że maksymalny rozmiar 4093 bajtów.

Kodowanie obrazu

Jeśli Twój JSON jest zbyt duży, aby zmieścić się w pliku cookie, możesz zakodować obraz jako obiekt base64 i zwrócić dane obrazu w odpowiedzi JSON.

W takim przypadku musisz zrekonstruować obraz na płótnie lub użyć formatu adresu URL danych obrazu, aby dynamicznie utworzyć obiekt obrazu, tak jak robi to adres URL komentarza Kevina.

Jednym minusem kodowania obrazu byłby większy rozmiar odpowiedzi. Z grubsza rozmiar obrazu po zakodowaniu w base64 będzie wynosił 37% większy niż oryginalny obraz.


Ostatecznie zależy to od twoich konkretnych potrzeb co do tego, która metoda najlepiej spełni twoje wymagania.


2 dla odpowiedzi nr 2

Możesz zakodować obraz jako ciąg base64 (http://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end) i zwróć to jako część JSON.