0

Restlet を使用して REST API を作成しています。私はほとんどすべての POST リクエストの本文として JSON を使用しているため、通常の POST は私のコードでは次のようになります。

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

リクエストの本文から JSON 文字列を取得して解析し、処理を行ってレスポンス表現を返します。

ここでもう 1 つやりたいことがあります。JSON と同時に送信する必要があるファイルがあります (これは xml であり、json の key:value 内にコピーして貼り付けることができると思いますが、それは避けたいと思います)。 . 私の考えは、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 であるエントリ (またはそれら) のリスト アイテムが得られ、メディア タイプ (FileItem の String として getContentType() から) と、ファイル コンテンツとしての基になる InputStream にアクセスできます。Stream に直接アクセスするよりも手の込んだことができるかもしれませんが、必要なのはそれだけでした。

@Put vs @Post はあなたに任せる選択肢です

于 2013-04-04T10:51:13.737 に答える