以JSON格式發布文件和相關資料到RESTful WebService
P粉056618053
2023-08-20 13:47:10
<p>在我正在開發的應用程式中,我們希望客戶端以JSON格式發送數據,因此我正在開發RESTful API。該應用程式的一部分要求客戶上傳一個檔案(通常是圖像),以及有關圖像的資訊。 </p>
<p>我很難追蹤到如何在單一請求中完成這個操作。是否可以將檔案資料Base64編碼為JSON字串?我需要向伺服器執行兩個POST請求嗎?我是否不應該使用JSON來處理這個問題? </p>
<p>另外,我們在後端使用Grails,並且這些服務可由原生行動用戶端(iPhone、Android等)訪問,如果這些資訊有所不同的話。 </p>
您可以使用 multipart/form-data 內容類型在一個請求中傳送文件和資料:
來自 http://www.faqs.org/rfcs/rfc2388.html:
您可以在每個邊界之間的每個部分中包含文件資訊或欄位資訊。我已經成功地實現了一個需要使用者提交資料和表單的RESTful服務,multipart/form-data完美地工作。該服務使用Java/Spring構建,客戶端使用C#,所以很遺憾我沒有Grails的範例可以提供給您關於如何設定服務。在這種情況下,您不需要使用JSON,因為每個「form-data」部分都為您提供了指定參數名稱及其值的位置。
使用multipart/form-data的好處是您正在使用HTTP定義的頭部,因此您遵循了使用現有HTTP工具建立服務的REST理念。
我在這裡問了一個類似的問題:
如何使用REST Web服務上傳帶有元資料的檔案?
你基本上有三種選擇:
multipart/form-data
的形式傳送文件,並將ID傳回給客戶端。然後客戶端使用該ID發送元數據,伺服器重新關聯文件和元數據。