パッケージ 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
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 インターフェース 説明 static interface
EntityPart.Builder
EntityPart
インスタンスのビルダー。
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 InputStreamSE
getContent()
このパートの入力ストリームを返します。<T> T
getContent(GenericType<T> type)
このパーツのコンテンツストリームを指定された型に変換して返します。<T> T
getContent(ClassSE<T> type)
このパーツのコンテンツストリームを指定されたクラスに変換して返します。OptionalSE<StringSE>
getFileName()
このパーツのファイル名を返します。MultivaluedMap<StringSE,StringSE>
getHeaders()
この特定の部分のヘッダーの不変の多値マップを返します。MediaType
getMediaType()
このパーツのコンテンツ型を返します。これはMediaType.valueOf(part.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE))
の呼び出しと同等です。StringSE
getName()
マルチパートエンティティ内のこのパートの名前を返します。static EntityPart.Builder
withFileName(StringSE partAndFileName)
部分name
およびfileName
を渡されたpartAndFileName
値に設定する新しいEntityPart.Builder
インスタンスを作成します。static EntityPart.Builder
withName(StringSE partName)
新しいEntityPart.Builder
インスタンスを作成します。
メソッドの詳細
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
getContent
<T> T getContent(ClassSE<T> type) throws IllegalArgumentExceptionSE, IllegalStateExceptionSE, IOExceptionSE, WebApplicationException
このパーツのコンテンツストリームを指定されたクラスに変換して返します。実装では、指定された型を処理するMessageBodyReader
とパーツのMediaType
を見つけて、ストリームを変換する必要があります。変換を実行するMessageBodyReader
が見つからない場合、このメソッドはIllegalArgumentException
をスローします。このメソッドが呼び出されたときにコンテンツストリームを閉じるには、実装が必要であるため、一度だけ呼び出すことができます。後続の呼び出しはIllegalStateException
になります。同様に、このメソッドがgetContent()
またはgetContent(GenericType)
を呼び出した後に呼び出されると、IllegalStateException
がスローされます。- 型パラメーター:
T
- エンティティ型- パラメーター:
type
- 実装がこのパートを変換するClass
- 戻り値:
- このパートのコンテンツを表す指定された
Class
のインスタンス - 例外:
IllegalArgumentExceptionSE
-MessageBodyReader
がこのパートの指定された型への変換を処理できない場合IllegalStateExceptionSE
- このメソッドまたは他のgetContent
メソッドのいずれかがすでに呼び出されている場合IOExceptionSE
-MessageBodyReader.readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream)
メソッドがIOException
をスローする場合WebApplicationException
-MessageBodyReader.readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream)
メソッドがWebApplicationException
をスローする場合
getContent
<T> T getContent(GenericType<T> type) throws IllegalArgumentExceptionSE, IllegalStateExceptionSE, IOExceptionSE, WebApplicationException
このパーツのコンテンツストリームを指定された型に変換して返します。実装では、指定された型を処理するMessageBodyReader
とパーツのMediaType
を見つけて、ストリームを変換する必要があります。変換を実行するMessageBodyReader
が見つからない場合、このメソッドはIllegalArgumentException
をスローします。このメソッドが呼び出されたときにコンテンツストリームを閉じるには、実装が必要であるため、一度だけ呼び出すことができます。後続の呼び出しはIllegalStateException
になります。同様に、このメソッドがgetContent()
またはgetContent(Class)
を呼び出した後に呼び出されると、IllegalStateException
がスローされます。- 型パラメーター:
T
- エンティティ型- パラメーター:
type
- 実装がこのパートを変換するジェネリクス型- 戻り値:
- このパートの内容を表す指定されたジェネリクス型のインスタンス
- 例外:
IllegalArgumentExceptionSE
-MessageBodyReader
がこのパートの指定された型への変換を処理できない場合IllegalStateExceptionSE
- このメソッドまたは他のgetContent
メソッドのいずれかがすでに呼び出されている場合IOExceptionSE
-MessageBodyReader.readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream)
メソッドがIOException
をスローする場合WebApplicationException
-MessageBodyReader.readFrom(Class, java.lang.reflect.Type, java.lang.annotation.Annotation[], MediaType, MultivaluedMap, InputStream)
メソッドがWebApplicationException
をスローする場合
getHeaders
MultivaluedMap<StringSE,StringSE> getHeaders()
この特定の部分のヘッダーの不変の多値マップを返します。- 戻り値:
- パーツヘッダーの不変
MultivaluedMap<String, String>
getMediaType
MediaType getMediaType()
このパーツのコンテンツ型を返します。これはMediaType.valueOf(part.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE))
の呼び出しと同等です。- 戻り値:
- このパートのメディア型