パッケージ jakarta.ws.rs.core
インターフェース EntityPart
public interface EntityPartEntityPartは、マルチパートエンティティの一部です。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 interfaceEntityPart.BuilderEntityPartインスタンスのビルダー。
方法の概要
すべてのメソッド 静的メソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 InputStreamSEgetContent()このパートの入力ストリームを返します。<T> TgetContent(GenericType<T> type)このパーツのコンテンツストリームを指定された型に変換して返します。<T> TgetContent(ClassSE<T> type)このパーツのコンテンツストリームを指定されたクラスに変換して返します。OptionalSE<StringSE>getFileName()このパーツのファイル名を返します。MultivaluedMap<StringSE,StringSE>getHeaders()この特定の部分のヘッダーの不変の多値マップを返します。MediaTypegetMediaType()このパーツのコンテンツ型を返します。これはMediaType.valueOf(part.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE))の呼び出しと同等です。StringSEgetName()マルチパートエンティティ内のこのパートの名前を返します。static EntityPart.BuilderwithFileName(StringSE partAndFileName)部分nameおよびfileNameを渡されたpartAndFileName値に設定する新しいEntityPart.Builderインスタンスを作成します。static EntityPart.BuilderwithName(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))の呼び出しと同等です。- 戻り値:
- このパートのメディア型