我正在現有應用程序之上創建一個REST API。其中一項功能需要將json數據與用戶上傳的文件一起使用。REST API Design將JSON數據和文件發送到同一請求中的api
我不確定如何將相同請求中的文件和json數據發送到REST API?
我json的一部分工作,我測試使用curl:
curl -XPOST http://localhost:8080/myapp/foo -d '{"mydata": {
"name": "somename",
"gender": "male"
}}'
//I would like to send an image (say, profile image) with the above request as well.
我使用的是Grails應用程序,所以我得到這個數據在我的控制器像這樣:new Foo(params.mydata)
。
問題
- 是否可以發送JSON數據和文件在同一請求API?如果是這樣,我怎樣才能使用捲曲或REST控制檯(鉻擴展)
- 這個請求的
contentType
會是什麼? - 我打算髮送另一種格式的數據,如果這意味着我可以在同一請求中發送文件和其他數據(字符串)。我不是綁在JSON
更新
我發現another SO question被問同樣的事情。從the answer to that question似乎只有三個選擇,並沒有一個表示它可能在同一個請求中發送json數據和文件。這是非常令人沮喪的......我會繼續討論這個問題,看看是否有人有其他想法。
我很困惑。你的回答是令人鼓舞的,但我發現了另一個與我的問題一致的SO問題,似乎只有三種選擇可用。沒有一個說JSON數據和文件可以在相同的請求發送:http://stackoverflow.com/questions/4083702/posting-a-file-and-data-to-restful-webservice-as-json – birdy
I即將建議在發佈的鏈接中包含選項3的內容 - 發送元數據,服務器響應一個URI以發佈圖像,將圖像發送到該URI。不過,多部分/混合MIME類型允許您在同一條消息中擁有多個內容類型,並由您定義的任何「邊界」分隔。這將使整體內容類型= multipart/mixed,然後接下來的兩個塊是application/json,然後是image/jpeg。 – David
好的,讓我試試'multipart/mixed'內容類型,它有兩個塊'application/json'和'image/jpeg'。等等,第二塊'image/jpeg'將如何工作?將文件上傳?試圖找出如何發送此請求作爲與REST控制檯Chrome插件測試:) – birdy