Base64 in Json: Ist es eine gute Idee für die Rest-API?

8

Ich entwickle eine Rest-API und frage mich:

Ist es eine gute Idee, base64-codierte Daten in Json zu speichern, z. B. zum Hochladen von Dateien? Was , wenn die base64 einige enthält {, }, :die json Inhalt Zeichen und Pausen?

Wenn dies keine gute Idee ist, welche Alternativen werden allgemein als Best Practices angesehen?

Dimitrios Desyllas
quelle
Wie definieren Sie "gute Idee"? Die JSON-Spezifikation erlaubt Zeichenfolgen. Base64 sind Zeichenfolgendaten. Tatsächlich ist dies eine Möglichkeit, Binärdaten in eine Zeichenfolgenform zu übertragen, damit Sie sie in textbasierte Datencontainer wie JSON einfügen können. Ob diese Vereinbarung Ihren Anforderungen angemessen entspricht, ist eine andere Frage.
Robert Harvey
2
Versuchen Sie es mit einem anderen Inhaltstyp als json. application/octet-streamkann ein Ansatz sein.
Matthew

Antworten:

6

Base64 ist eine sichere Codierung für JSON.

Der Nachteil bei der Verwendung von Base64 ist, dass es ziemlich ausführlich ist. Dies kann zu einem erheblichen Overhead beim Hochladen von Dateien führen, was einen längeren Upload und eine höhere Bandbreite bedeutet. Wenn es möglich ist, schlage ich vor, ein Binärprotokoll zu verwenden, das JSON-Typen unterstützt. CBOR ist eine beliebte Version , die ElasticSearch für das Hochladen von Dokumenten verwendet. Es gibt auch BSON .

Samuel
quelle
2
Base64 enthält ohnehin keine der vom OP zitierten Zeichen.
Robert Harvey
Ich dachte es wäre nicht :)
Samuel
@ Robert Harvey: Nun ... ich erinnere mich, dass man seinen eigenen Zeichensatz definieren kann, der für die Codierung in Base64 verwendet werden soll. Möglicherweise gibt es einen beliebten Satz, den viele Benutzer verwenden, aber es ist nicht sicher, ob eine Base64-Implementierung denselben Satz wie die nächste verwendet.
Martin Maat