JSON'u kabul eden ve yanıtlayan REST API ile sunucu geliştiriyoruz. Sorun, görüntüleri istemciden sunucuya yüklemeniz gerekiyorsa.
Not: ve ayrıca varlığın (kullanıcı) birden fazla dosyaya (carPhoto, licensePhoto) sahip olabileceği ve başka özelliklere (ad, e-posta ...) sahip olabileceği bir kullanım durumundan bahsediyorum, ancak yeni kullanıcı oluşturduğunuzda, Bu resimleri göndermeyin, kayıt işleminden sonra eklenirler.
Farkında olduğum çözümler, ancak her birinin bazı kusurları var
1. JSON yerine çoklu bölüm / form verileri kullanın
iyi : POST ve PUT istekleri mümkün olduğunca RESTful'dur, dosya ile birlikte metin girişleri içerebilirler.
eksileri : Artık JSON değil, test etmek, hata ayıklamak vb. çok daha kolay.
2. Ayrı dosyaları güncellemeye izin ver
Yeni kullanıcı oluşturmak için POST isteği, resim eklemeye izin vermiyor (başlangıçta söylediğim gibi bizim durumumuzda sorun yok), resim yükleme, örneğin / users / 4 / carPhoto'a çoklu bölüm / form verileri olarak PUT isteği ile yapılır.
iyi : Her şey (dosya yükleme kendisi hariç) JSON'da kalır, test edilmesi ve hata ayıklaması kolaydır (tam JSON isteklerini uzunluklarından korkmadan günlüğe kaydedebilirsiniz)
eksileri : Sezgisel değil, POST veya PUT tüm varlık değişkenlerini aynı anda /users/4/carPhoto
yapamazsınız ve ayrıca bu adres bir koleksiyon olarak daha fazla düşünülebilir (REST API için standart kullanım durumu şuna benzer /users/4/shipments
). Genellikle varlığın her bir değişkenini GET / PUT, örneğin kullananlar / 4 / name gibi edemezsiniz (ve istemezsiniz). GET ile isim alabilir ve PUT ile kullanıcıları değiştirebilirsiniz / 4. Kimlikten sonra bir şey varsa, genellikle kullanıcılar / 4 / yorumlar gibi başka bir koleksiyon
3. Base64 kullanın
JSON olarak gönderin, ancak Base64 ile dosyaları kodlayın.
iyi : İlk çözümle aynı, mümkün olduğunca RESTful hizmetidir.
eksileri : Bir kez daha, test ve hata ayıklama çok daha kötü (vücudun megabayt veri olabilir), hem boyut hem de işlem süresinde artış var - hem istemci hem de sunucu
Gerçekten çözüm no kullanmak istiyorum. 2, ama eksileri vardır ... Herkes bana "en iyi nedir" çözüm daha iyi bir fikir verebilir?
Amacım mümkün olduğunca basit tutmak isterken mümkün olduğunca çok standart içeren RESTful hizmetlerine sahip olmak.