Base64 en Json: ¿es una buena idea para API de descanso?

8

Estoy desarrollando una API Rest y me pregunto:

¿Es una buena idea poner datos codificados en base64 en Json, por ejemplo, para cargar archivos? ¿Qué pasa si los base64 contiene algunos de {, }, :personajes y rompe el contenido JSON?

Si no es una buena idea, ¿qué alternativas se consideran ampliamente las mejores prácticas?

Dimitrios Desyllas
fuente
¿Cómo define "buena idea"? La especificación JSON permite cadenas. Base64 son datos de cadena; de hecho, es una forma de obtener datos binarios en forma de cadena para que pueda colocarlos en contenedores de datos basados ​​en texto ... como JSON. Si ese acuerdo satisface adecuadamente sus necesidades es una cuestión diferente.
Robert Harvey
2
Intente usar un tipo de contenido diferente que no sea json. application/octet-streamPuede ser un enfoque.
Matthew

Respuestas:

6

Base64 es una codificación segura para JSON.

La desventaja de usar Base64 es que es bastante detallado. Puede agregar una sobrecarga significativa a la carga de su archivo, lo que significa una carga más larga y más ancho de banda utilizado. Si es posible, sugiero usar un protocolo binario que admita tipos JSON. CBOR es uno de los más populares que ElasticSearch utiliza para cargar documentos. También hay BSON .

Samuel
fuente
2
Base64 no contiene ninguno de los caracteres que el OP citó de todos modos.
Robert Harvey
Pensé que no :)
Samuel
@Robert Harvey: Bueno ... recuerdo que uno puede definir su propio conjunto de caracteres que se utilizarán para codificar en Base64. Puede haber un conjunto popular que usan muchas personas, pero no es seguro que una implementación de Base64 use el mismo conjunto que la siguiente.
Martin Maat