0

我正在使用 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 多部分请求中检索 Body 和 File。

抱歉有点含糊,我在那里很迷茫。

先感谢您。

4

1 回答 1

1

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

@Put
public Representation uploadFile(final Representation representation){

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

...

这为您提供了 isFormField() 为 false 的条目(或那些)的列表项,然后我可以访问媒体类型(从 getContentType() 作为 FileItem 中的字符串)和底层 InputStream 作为文件内容。您可能能够比直接访问 Stream 更有趣,但这就是我所需要的。

@Put vs @Post 是我留给你的选择

于 2013-04-04T10:51:13.737 回答