2013-04-03 29 views
0

我正在使用Restlet編寫REST API。 我主要是使用JSON作爲我所有的POST請求的身體,讓普通帖子看起來像這樣在我的代碼:使用Restlet和JSON主體進行多部分POST處理

@Post("json") 
public Representation storeValue(String value){ 
JSONObject json = (JSONObject) JSONValue.parse(value); 
String uname = (String)json.get("name"); 
...} 

我從請求的身體得到的JSON字符串和解析它,做我的東西並返回響應表示。我有一個文件(這是一個XML文件,我猜可能被複制粘貼在JSON鍵內:值,但我寧願避免),它必須在相同的位置發送時間就像JSON一樣。我的想法是要求我的api的用戶發送一個多部分請求,其正文爲正常的JSON和附加文件。

我不太確定如何做到這一點,我找到了FileUpload Restlet擴展,但很少有完整的例子,所以我不太確定如何使用它。

實質上,問題是如何從Restlet 2+中的休息多部分請求中檢索正文和文件。

對不起有點模糊,我很失落。

預先感謝您。

回答

1

您將需要添加異常處理,但我曾與成功,提交了「多/表單數據」表格:

@Put 
public Representation uploadFile(final Representation representation){ 

List<FileItem> items = new RestletFileUpload(
     new DiskFileItemFactory()).parseRepresentation(representation); 

... 

它給你一個列表項的條目(或這些),其中isFormField()爲false然後我可以訪問媒體類型(從getContentType()作爲FileItem中的String)和底層InputStream作爲文件內容。您可能會比直接訪問Stream更有趣,但那只是我需要的。

@Put vs @Post是我給你的選擇

+0

謝謝!我認爲這將工作,如果我從表單中接收數據,但我收到一個多部分/相關類型的請求,沒有鍵值(正如我對錶單),只有一個正文和一個XML文件,沒有標識符:/ – fdhex