public final class MultipartBodyBuilder extends Object
MultiValueMap<String, HttpEntity>, which can be provided to the
WebClient through the body method.
Examples:
// Add form field
MultipartBodyBuilder builder = new MultipartBodyBuilder();
builder.part("form field", "form value").header("foo", "bar");
// Add file part
Resource image = new ClassPathResource("image.jpg");
builder.part("image", image).header("foo", "bar");
// Add content (e.g. JSON)
Account account = ...
builder.part("account", account).header("foo", "bar");
// Add content from Publisher
Mono<Account> accountMono = ...
builder.asyncPart("account", accountMono).header("foo", "bar");
// Build and use
MultiValueMap<String, HttpEntity<?>> multipartBody = builder.build();
Mono<Void> result = webClient.post()
.uri("...")
.body(multipartBody)
.retrieve()
.bodyToMono(Void.class)
| Modifier and Type | Class and Description |
|---|---|
static interface |
MultipartBodyBuilder.PartBuilder
Builder that allows for further customization of part headers.
|
| Constructor and Description |
|---|
MultipartBodyBuilder()
Creates a new, empty instance of the
MultipartBodyBuilder. |
| Modifier and Type | Method and Description |
|---|---|
<T,P extends org.reactivestreams.Publisher<T>> |
asyncPart(String name,
P publisher,
Class<T> elementClass)
Add a part from
Publisher content. |
<T,P extends org.reactivestreams.Publisher<T>> |
asyncPart(String name,
P publisher,
ParameterizedTypeReference<T> typeReference)
Variant of
asyncPart(String, Publisher, Class) with a
ParameterizedTypeReference for the element type information. |
MultiValueMap<String,HttpEntity<?>> |
build()
Return a
MultiValueMap with the configured parts. |
MultipartBodyBuilder.PartBuilder |
part(String name,
Object part)
Add a part where the Object may be:
String -- form field
Resource -- file part
Object -- content to be encoded (e.g. |
MultipartBodyBuilder.PartBuilder |
part(String name,
Object part,
MediaType contentType)
Variant of
part(String, Object) that also accepts a MediaType. |
public MultipartBodyBuilder()
MultipartBodyBuilder.public MultipartBodyBuilder.PartBuilder part(String name, Object part)
Resource -- file part
HttpEntity -- part content and headers although generally it's
easier to add headers through the returned builder
Part -- a part from a server request
name - the name of the part to addpart - the part datapublic MultipartBodyBuilder.PartBuilder part(String name, Object part, @Nullable MediaType contentType)
part(String, Object) that also accepts a MediaType.name - the name of the part to addpart - the part datacontentType - the media type to help with encoding the partpublic <T,P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, Class<T> elementClass)
Publisher content.name - the name of the part to addpublisher - a Publisher of content for the partelementClass - the type of elements contained in the publisherpublic <T,P extends org.reactivestreams.Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference)
asyncPart(String, Publisher, Class) with a
ParameterizedTypeReference for the element type information.name - the name of the part to addpublisher - the part contentstypeReference - the type of elements contained in the publisherpublic MultiValueMap<String,HttpEntity<?>> build()
MultiValueMap with the configured parts.