您可以使用 multipart/form-data 內(nèi)容類型在一個請求中發(fā)送文件和數(shù)據(jù):
來自 http://www.faqs.org/rfcs/rfc2388.html:
您可以在每個邊界之間的每個部分中包含文件信息或字段信息。我已經(jīng)成功地實現(xiàn)了一個需要用戶提交數(shù)據(jù)和表單的RESTful服務,multipart/form-data完美地工作。該服務使用Java/Spring構(gòu)建,客戶端使用C#,所以很遺憾我沒有Grails的示例可以提供給您關于如何設置服務。在這種情況下,您不需要使用JSON,因為每個“form-data”部分都為您提供了指定參數(shù)名稱及其值的位置。
使用multipart/form-data的好處是您正在使用HTTP定義的頭部,因此您遵循了使用現(xiàn)有HTTP工具創(chuàng)建服務的REST理念。
我在這里問了一個類似的問題:
如何使用REST Web服務上傳帶有元數(shù)據(jù)的文件?
你基本上有三種選擇:
multipart/form-data
的形式發(fā)送文件,并將ID返回給客戶端。然后客戶端使用該ID發(fā)送元數(shù)據(jù),服務器重新關聯(lián)文件和元數(shù)據(jù)。