Tôi có một máy chủ và tôi cần tải lên các tệp cùng với một số trường từ máy khách đến máy chủ. Tôi hiện đang sử dụng dữ liệu đa chuẩn/biểu mẫu.Có sử dụng multipart/form-data tốt hơn không thì JSON + Base64?
Tuy nhiên, tôi đã thấy rằng việc sử dụng dữ liệu nhiều phần/biểu mẫu không phải là lý tưởng. Các đối tượng trên máy chủ của tôi có thể có các đối tượng khác được lồng trong chúng, và do đó được biểu diễn như một đối tượng JSON với các đối tượng JSON khác được nhúng bên trong.
Tôi muốn khách hàng bắt đầu thực hiện các yêu cầu POST/PUT bằng cách sử dụng biểu diễn JSON chính xác như mong đợi trong yêu cầu GET đến máy chủ, theo cách REST-ful. Bằng cách này, tôi không phải làm phẳng các trường có thể được lồng ghép một vài lớp trong đối tượng JSON để sử dụng dữ liệu nhiều phần/biểu mẫu.
Vấn đề là, JSON không đại diện cho dữ liệu nhị phân. Multipart/form-data dường như không có cách để biểu diễn các trường được lồng trong các giá trị của các trường khác. Nhưng nó có xử lý tốt hơn các tập tin tải lên.
Tôi không biết cách thiết kế này. Tôi có nên chỉ có khách hàng tải lên JSON với các trường được mã hóa trong base64 và nhận 25% lượt truy cập không? Hoặc tôi nên có đối tượng JSON được đại diện như một loại biến "json" trong yêu cầu dữ liệu đa dạng/biểu mẫu và có tệp nhị phân được tải lên dưới dạng biến khác không?
Cách tiếp cận cuối cùng ủng hộ các cuộc gọi riêng biệt (một cho hình ảnh Multipart và một cho dữ liệu JSON) là thú vị. Mối quan tâm duy nhất là 2 cuộc gọi API thay vì một cuộc gọi API. Ofcourse, thương mại này tắt là ứng dụng cụ thể. –