使用带有JSON主体的Restlet进行多部分POST处理

时间:2013-04-03 13:43:49

标签: java rest restlet

我正在使用Restlet编写REST API。 我主要使用JSON作为我所有POST请求的主体,所以在我的代码中正常的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 +中的Rest多部分请求中检索正文和文件。

抱歉有点模糊,我很失落。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要添加异常处理,但我已成功完成,提交“multipart / form-data”表单:

@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是我留给你的选择