Base64 no Json: é uma boa idéia para API Rest?

8

Estou desenvolvendo uma API Rest e estou me perguntando:

É uma boa idéia colocar dados codificados em base64 no Json, por exemplo, para upload de arquivos? E se os base64 contém alguns dos {, }, :personagens e quebra o conteúdo json?

Se não é uma boa ideia, que alternativas são amplamente consideradas boas práticas?

Dimitrios Desyllas
fonte
Como você define "boa ideia"? A especificação JSON permite cadeias. Base64 são dados de string; na verdade, é uma maneira de obter dados binários em um formato de string para que você possa colocá-los em contêineres de dados baseados em texto ... como JSON. Se esse arranjo atende adequadamente às suas necessidades é uma questão diferente.
Robert Harvey
2
Tente usar um tipo de conteúdo diferente de json. application/octet-streampode ser uma abordagem.
Mateus

Respostas:

6

Base64 é uma codificação segura para JSON.

A desvantagem de usar o Base64 é que é bastante detalhado. Ele pode adicionar uma sobrecarga significativa ao seu upload de arquivo, o que significa um upload mais longo e mais largura de banda usada. Se possível, sugiro usar um protocolo binário que suporte tipos JSON. O CBOR é popular e o ElasticSearch usa para upload de documentos. Há também BSON .

Samuel
fonte
2
Base64 não contém nenhum dos caracteres citados pelo OP.
Robert Harvey
Eu pensei que não fez :)
Samuel
@ Robert Harvey: Bem ... Lembro que é possível definir seu próprio conjunto de caracteres a serem usados ​​para codificação em Base64. Pode haver um conjunto popular que muitas pessoas usam, mas não é certo que uma implementação do Base64 use o mesmo conjunto que a seguinte.
Martin Maat