ホームページ > Java > &#&チュートリアル > Jersey RESTful Webサービスに追加のJSONデータを含むファイルをアップロードするにはどうすればよいですか?

Jersey RESTful Webサービスに追加のJSONデータを含むファイルをアップロードするにはどうすればよいですか?

DDD
リリース: 2024-12-03 07:34:09
オリジナル
434 人が閲覧しました

How to Upload Files with Additional JSON Data in a Jersey RESTful Web Service?

Jersey RESTful Web サービスでの追加データを含むファイルのアップロード

単一の REST 呼び出しで他のオブジェクト データとともにファイルをアップロードするには、以下を変更します次のように、uploadFileWithData メソッド:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") String employeeJson) {

    // Deserialize the employee data from JSON
    JacksonJsonProvider provider = new JacksonJsonProvider();
    Employee emp = provider.readFrom(Employee.class, employeeJson);

    // ...business logic...
}
ログイン後にコピー

Keyポイント:

  • Employee オブジェクトを使用する代わりに、従業員データを生の JSON 文字列 (StringemployeeJson) として受け取ります。
  • Jackson の JacksonJsonProvider を使用して、JSON 文字列を逆シリアル化します。 Employee オブジェクト。
  • プロバイダーがJAX-RS アプリケーション。

Postman のトラブルシューティング:

Postman は、個々のボディ部分の Content-Type を自動的に設定しない場合があります。これを修正するには:

  1. Postman エディターでリクエスト本文を開きます。
  2. 「emp」部分を右クリックし、「編集」または「ヘッダーの追加」を選択します。
  3. Content-Type を application/json に設定します。

代替解決策:

または、REST メソッドで Content-Type を明示的に設定できます。

@POST
@Path("/upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(
        @FormDataParam("emp") FormDataBodyPart jsonPart,
        @FormDataParam("file") FormDataBodyPart bodyPart) {

    jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
    Employee emp = jsonPart.getValueAs(Employee.class);

    // ...business logic...
}
ログイン後にコピー

注:

場合HttpUrlConnection とは異なるコネクタを使用している場合、関連するセクションで説明されている問題が発生する可能性があります。コメント。

以上がJersey RESTful Webサービスに追加のJSONデータを含むファイルをアップロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート