パッケージ jakarta.ws.rs.core

インターフェース EntityPart


  • public interface EntityPart
    EntityPart は、マルチパートエンティティの一部です。RFC 7578 で定義されているように、マルチパートのリクエストまたはレスポンスには、コンテンツ型 "multipart/form-data" が必要であり、boundary パラメーターを使用して、1 つのパートがどこで終了し、次のパートが開始するかを示します。

    マルチパートエンティティは、パーツのコレクション (例: List<EntityPart>) またはフォームパラメーター (例: @FormParam("part1Name") EntityPart part1) としてリソースメソッドで受け取ることができます。

    同様に、返されたエンティティを EntityParts (例: response.readEntity(new GenericType<List<EntityPart>>() {})) のコレクションとして読み取ることにより、クライアントはマルチパートレスポンスを受信する場合があります。

    マルチパートエンティティをクライアントリクエストまたはリソースメソッドからのレスポンスとして送信するには、EntityPart.Builder を使用してリストを作成できます。例:

     Client c = ClientBuilder.newClient();
    WebTarget target = c.target(someURL);
    List<EntityPart> parts = Arrays.asList(
         EntityPart.withName("name1").fileName("file1.doc").content(stream1).build(),
         EntityPart.withName("name2").fileName("file2.doc").content(stream2).build(),
         EntityPart.withName("name3").fileName("file3.xml").content(myObject, MyClass.class).mediaType("application/xml").build());
    GenericEntity<List<EntityPart>> genericEntity = new GenericEntity<>(parts){};
    Entity entity = Entity.entity(genericEntity, MediaType.MULTIPART_FORM_DATA);
    Response r = target.request().post(entity);
     
    EntityPart を構築するときは、名前と内容が必要であることに注意してください。ヘッダー、ファイル名、メディア型などのその他のプロパティはオプションです。マルチパートコンテンツの送信時にコンテンツ入力ストリームを閉じるのは、実装コードのロールです。実装が送信する前にストリームを閉じると、予期しない例外が発生する可能性があります。マルチパートコンテンツを受信するときにストリームを閉じるのは、呼び出し元のコードの責任です。
    導入:
    3.1
    • メソッドの詳細

      • withName

        static EntityPart.Builder withName​(StringSE partName)
        新しい EntityPart.Builder インスタンスを作成します。
        パラメーター:
        partName - マルチパートエンティティ内で作成するパートの名前
        戻り値:
        新しい EntityPart インスタンスを構築するための EntityPart.Builder
      • withFileName

        static EntityPart.Builder withFileName​(StringSE partAndFileName)
        部分 name および fileName を渡された partAndFileName 値に設定する新しい EntityPart.Builder インスタンスを作成します。

        論理的には、これは EntityPart.withName(x).fileName(x) と同じです。

        パラメーター:
        partAndFileName - マルチパートエンティティ内で作成するパートの名前とファイル名
        戻り値:
        新しい EntityPart インスタンスを構築するための EntityPart.Builder
      • getName

        StringSE getName()
        マルチパートエンティティ内のこのパートの名前を返します。これは、このパートの Content-Disposition ヘッダーの "name" 属性 になります。
        戻り値:
        パーツ名
      • getFileName

        OptionalSE<StringSE> getFileName()
        このパーツのファイル名を返します。これは、このパートの Content-Disposition ヘッダーの "filename" 属性 になります。一部にファイル名は必要ないため、ファイル名が存在しない場合は Optional.empty() が返されます。
        戻り値:
        存在する場合、ファイル名を示す Optional<String> 
      • getContent

        InputStreamSE getContent()
        このパートの入力ストリームを返します。これはパーツのコンテンツ本体であり、大量のデータがヒープにロードされる可能性を回避するためにストリームとしてアクセスされます。受信後にこのストリームを閉じるのは、呼び出し元のコードの責任です。
        戻り値:
        このパートの内容を表す InputStream 
      • getHeaders

        MultivaluedMap<StringSE,​StringSE> getHeaders()
        この特定の部分のヘッダーの不変の多値マップを返します。
        戻り値:
        パーツヘッダーの不変 MultivaluedMap<String, String> 
      • getMediaType

        MediaType getMediaType()
        このパーツのコンテンツ型を返します。これは MediaType.valueOf(part.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE)) の呼び出しと同等です。
        戻り値:
        このパートのメディア型