java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...
我正在現有應用程序之上創建一個RESTAPI。其中一個特性接受JSON數據以及用戶上傳的文件。
我不確定如何將同一請求中的文件和JSON數據發送到RESTAPI?
我讓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)。
問題
是否可以向API發送相同請求中的JSON數據和文件?如果是這樣,如何使用curl或rest控制臺(chrome擴展)
這個請求的contentType是什么?
如果這意味著我可以在同一個請求中發送文件和其他數據(字符串),那么我可以使用其他格式發送數據。我沒有綁在JSON上
更新
我發現了另一個同樣的問題。從這個問題的答案來看,似乎只有三個選擇,沒有一個選擇可以在同一個請求中同時發送JSON數據和文件。這是非常令人沮喪的…我將保持這個問題的開放,看看是否有人有其他的想法。
我認為這樣做的"正確"方法是使用多部分消息。這樣,您就可以使用相應的正確mime類型發布JSON和圖像。維基百科關于多部分mime類型的文章提供了一個例子,說明了這一點。看起來ApacheHTTPCommons和Jersey都支持這種方式,顯然curl也支持這種方式!
我很困惑。你的回答令人鼓舞,但我發現了另一個與我的問題相同的問題,似乎只有三種選擇。沒有人說JSON數據和文件可以在同一個請求中發送:stackoverflow.com/questions/4083702/…
我正要建議在您發布的鏈接中選項3的數量-發送元數據,服務器用一個URI響應,將圖像發布到,將圖像發送到該URI。然而,multipart/mixed mime類型允許您在同一條消息中有多個內容類型,由您定義的任何"邊界"分隔。這將使整體內容類型為multipart/mixed,接下來的兩個塊是application/json,然后是image/jpeg。
好的,讓我用兩個塊來嘗試application/json和image/jpeg的multipart/mixed內容類型。等等,第二個街區image/jpeg怎么辦?文件會上傳嗎?只是想知道如何使用REST控制臺chrome插件將此請求作為測試發送:)
總結
以上是生活随笔為你收集整理的java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寸开头的成语有哪些?
- 下一篇: 汗蒸一次费用多少?