Siarkan fail dan data berkaitan ke RESTful WebService dalam format JSON
P粉056618053
P粉056618053 2023-08-20 13:47:10
0
2
581
<p>Dalam aplikasi yang saya bangunkan, kami mahu pelanggan menghantar data dalam format JSON, jadi saya sedang membangunkan API RESTful. Sebahagian daripada aplikasi memerlukan pelanggan untuk memuat naik fail (biasanya imej), bersama-sama dengan maklumat tentang imej. </p> <p>Saya menghadapi masalah menjejaki cara untuk mencapai ini dalam satu permintaan. Adakah mungkin untuk Base64 mengekod data fail ke dalam rentetan JSON? Adakah saya perlu melaksanakan dua permintaan POST kepada pelayan? Bukankah saya sepatutnya menggunakan JSON untuk mengendalikan ini? </p> <p>Selain itu, kami menggunakan Grails pada bahagian belakang, dan perkhidmatan ini boleh diakses oleh pelanggan mudah alih asli (iPhone, Android, dll.), jika maklumat itu berbeza. </p>
P粉056618053
P粉056618053

membalas semua(2)
P粉994092873

Anda boleh menggunakan jenis kandungan multipart/form-data untuk menghantar fail dan data dalam satu permintaan:

Dari http://www.faqs.org/rfcs/rfc2388.html:

Anda boleh memasukkan maklumat fail atau maklumat medan dalam setiap bahagian antara setiap sempadan. Saya telah berjaya melaksanakan perkhidmatan RESTful yang memerlukan pengguna menyerahkan data dan borang, multipart/form-data berfungsi dengan sempurna. Perkhidmatan ini dibina menggunakan Java/Spring dan pelanggan menggunakan C#, jadi malangnya saya tidak mempunyai contoh Grails untuk memberi anda cara menyediakan perkhidmatan. Dalam kes ini, anda tidak perlu menggunakan JSON kerana setiap bahagian "data borang" memberi anda tempat untuk menentukan nama parameter dan nilainya.

Kelebihan menggunakan data berbilang bahagian/bentuk ialah anda menggunakan pengepala yang ditakrifkan oleh HTTP, jadi anda mengikuti falsafah REST menggunakan alat HTTP sedia ada untuk mencipta perkhidmatan.

P粉145543872

Saya bertanya soalan yang sama di sini:

Bagaimana untuk memuat naik fail dengan metadata menggunakan perkhidmatan web REST?

Anda pada asasnya mempunyai tiga pilihan:

  1. Base64 mengekod fail, tetapi meningkatkan saiz data sebanyak kira-kira 33% dan menambah overhed pemprosesan pengekodan/penyahkodan dalam kedua-dua pelayan dan pelanggan.
  2. Mula-mula hantar fail sebagai multipart/form-data dan kembalikan ID kepada pelanggan. Pelanggan kemudiannya menghantar metadata menggunakan ID tersebut dan pelayan mengaitkan semula fail dan metadata.
  3. Hantar metadata dahulu dan pulangkan ID kepada pelanggan. Pelanggan kemudiannya menghantar fail menggunakan ID tersebut dan pelayan mengaitkan semula fail dan metadata.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan