JsonのBase64:Rest APIの良いアイデアですか?


8

私はRest APIを開発していて、自分自身に質問しています。

たとえばファイルのアップロードのために、base64でエンコードされたデータをJsonに配置することは良い考えですか?何base64ではいくつかの含まれている場合は{}:文字や休憩JSONコンテンツを?

良いアイデアではない場合、ベストプラクティスとして広く考えられている選択肢はどれですか。


「良いアイデア」をどのように定義しますか?JSON仕様では文字列を使用できます。Base64は文字列データです。実際、これはバイナリデータを文字列形式にして、JSONのようなテキストベースのデータコンテナーに入れることができる方法の1つです。その取り決めがあなたのニーズを適切に満たすかどうかは別の問題です。
ロバートハーヴェイ

2
json以外の別のコンテンツタイプを使用してみてください。 application/octet-stream一つのアプローチかもしれません。
マタイ

回答:


6

Base64は、JSONの安全なエンコーディングです。

Base64を使用することの欠点は、かなり冗長であることです。ファイルのアップロードにかなりのオーバーヘッドを追加する可能性があり、アップロードが長くなり、使用される帯域幅が増えます。可能であれば、JSONタイプをサポートするバイナリプロトコルを使用することをお勧めします。CBORは、ElasticSearchがドキュメントのアップロードに使用する一般的なものです。BSONもあります。


2
いずれにせよ、OPが引用した文字はBase64には含まれていません。
ロバートハーヴェイ

そうではないと思いました:)
Samuel

@Robert Harvey:ええと... Base64でのエンコードに使用する独自の文字セットを定義できることを覚えています。多くの人々が使用する人気のあるセットがあるかもしれませんが、1つのBase64実装が次のものと同じセットを使用するかどうかは確実ではありません。
Martin Maat 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.