1

私はJersey&Jacksonを使用して、JSONでRestfulベースのWebサービスを処理しています。

ファイルシステム上にあるjsonテキストファイル(例:customer.json)があるとしましょう...

@GETを実装するRestfulメソッドからそのjsonファイルを処理することは可能ですか?

@GETメソッド内でJavaのファイルI/Oを使用してファイルをアップロードする必要がありますか?

どんな助けでも大歓迎です...

4

2 に答える 2

0

GETは「安全な」方法と見なされるため、お勧めしません。https://www.rfc-editor.org/rfc/rfc2616#page-51を参照してください。アップロードの最終結果に応じて、POSTまたはPUTを使用する必要があります。後続のアップロードでサーバーの状態が変更されない場合はPUT、それ以外の場合はPOSTを使用します。

ジャージーはアップロードをサポートしています。アップロードを実装する方法の良い例を次に示します:http ://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/ 。

例のようにファイルをディスクに保存したくない場合は、代わりにByteArrayOutputStreamを使用してメモリに保存できます。次に、それから文字列を作成します。

String str = new String(byteArrayOutputStream.toByteArray(), "UTF-8");

次に、JSONObjectを作成します。

JSONObject json = new JSONObhect(str);
于 2012-11-08T21:41:51.583 に答える
0

JSON ファイルが小さい場合は、はい、URL の末尾にエンコードできます。

GET www.mydomain.tld/process/json/?string={ json: "testest" }

しかし、現実的には、いいえ。回避策として、ファイルがある場所の URL や以前にサーバーに POST した一時 GUID など、ファイルへの参照を送信できます。

GET www.mydomain.tld/process/json/?file=http://www.otherdomain.tld/file.json

または、ファイルの内容全体を含む別のコントローラーへの最初の POST は、ローカル ストレージまたはデータベースからアップロードされたファイルを取得するために、サーバーが後続の GET 要求で使用できる GUID を返します。

guid <-- POST www.mydomain.tld/upload/json/ {BIG JSON FILE}
GET www.mydomain.tld/process/json/?guid={guid}
于 2012-11-08T21:01:35.147 に答える