Base64 di Json: Apakah Itu Ide yang Baik untuk API Istirahat?

8

Saya sedang mengembangkan API Istirahat, dan saya bertanya pada diri sendiri:

Apakah ini ide yang bagus untuk meletakkan data yang disandikan base64 di Json, misalnya untuk unggahan file? Bagaimana jika base64 berisi beberapa {, }, :karakter dan istirahat konten json?

Jika bukan ide yang baik, alternatif apa yang secara luas dianggap sebagai praktik terbaik?

Dimitrios Desyllas
sumber
Bagaimana Anda mendefinisikan "ide bagus?" Spesifikasi JSON memungkinkan string. Base64 adalah data string; sebenarnya, ini adalah salah satu cara untuk mendapatkan data biner ke dalam bentuk string sehingga Anda dapat memasukkannya ke dalam wadah data yang berbasis teks ... seperti JSON. Apakah pengaturan itu memenuhi kebutuhan Anda secara memadai adalah masalah yang berbeda.
Robert Harvey
2
Coba gunakan tipe konten berbeda selain json. application/octet-streammungkin satu pendekatan.
Matius

Jawaban:

6

Base64 adalah penyandian yang aman untuk JSON.

Kelemahan dari menggunakan Base64 adalah bahwa itu sangat bertele-tele. Itu dapat menambah overhead yang signifikan ke unggahan file Anda yang berarti unggah lebih lama dan lebih banyak bandwidth yang digunakan. Jika mungkin saya sarankan menggunakan protokol biner yang mendukung tipe JSON. CBOR adalah yang populer yang digunakan ElasticSearch untuk mengunggah dokumen. Ada juga BSON .

Samuel
sumber
2
Base64 tidak mengandung karakter OP yang dikutip.
Robert Harvey
Saya pikir itu tidak :)
Samuel
@Robert Harvey: Ya ... Saya ingat orang dapat mendefinisikan set karakternya sendiri untuk digunakan untuk pengkodean di Base64. Mungkin ada set populer yang digunakan banyak orang, tetapi tidak pasti bahwa satu implementasi Base64 akan menggunakan set yang sama seperti yang berikutnya.
Martin Maat