Base64 trong Json: Nó có phải là một ý tưởng tốt cho API nghỉ ngơi không?


8

Tôi đang phát triển API nghỉ ngơi và tôi đang tự hỏi:

Có phải là một ý tưởng tốt để đặt dữ liệu được mã hóa base64 trong Json, ví dụ như để tải lên tệp? Có gì nếu base64 chứa một số {, }, :nhân vật và vi phạm các nội dung json?

Nếu không phải là một ý tưởng tốt, những lựa chọn thay thế nào được coi là thực hành tốt nhất?


Làm thế nào để bạn xác định "ý tưởng tốt?" Đặc tả JSON cho phép các chuỗi. Base64 là dữ liệu chuỗi; thực tế, đó là một cách để đưa dữ liệu nhị phân thành dạng chuỗi để bạn có thể đặt nó vào các thùng chứa dữ liệu dựa trên văn bản ... như JSON. Cho dù sự sắp xếp đó đáp ứng đầy đủ nhu cầu của bạn là một vấn đề khác nhau.
Robert Harvey

2
Hãy thử sử dụng một loại nội dung khác ngoài json. application/octet-streamcó thể là một cách tiếp cận
Matthew

Câu trả lời:


6

Base64 là một mã hóa an toàn cho JSON.

Nhược điểm của việc sử dụng Base64 là nó khá dài dòng. Nó có thể thêm chi phí đáng kể vào tải lên tệp của bạn, có nghĩa là tải lên lâu hơn và sử dụng nhiều băng thông hơn. Nếu có thể, tôi khuyên bạn nên sử dụng giao thức nhị phân hỗ trợ các loại JSON. CBOR là một ứng dụng phổ biến mà ElasticSearch sử dụng để tải lên tài liệu. Ngoài ra còn có BSON .


2
Base64 không chứa bất kỳ ký tự nào mà OP đã trích dẫn.
Robert Harvey

Tôi nghĩ là không :)
Samuel

@Robert Harvey: Chà ... Tôi nhớ người ta có thể định nghĩa bộ ký tự của riêng mình sẽ được sử dụng để mã hóa trong Base64. Có thể có một bộ phổ biến mà nhiều người sử dụng nhưng không chắc chắn rằng một triển khai Base64 sẽ sử dụng cùng một bộ như sau.
Martin Maat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.