Class MultipartBodyBuilder
java.lang.Object
org.springframework.http.client.MultipartBodyBuilder
Prepare the body of a multipart request, resulting in a
MultiValueMap<String, HttpEntity>. Parts may be concrete values or
via asynchronous types such as Reactor Mono, Flux, and
others registered in the
ReactiveAdapterRegistry.
This builder is intended to POST multipart/form-data using the reactive
WebClient.
For multipart requests with the RestTemplate, simply create and
populate a MultiValueMap<String, HttpEntity> as shown in the Javadoc for
FormHttpMessageConverter
and in the
reference docs.
Below are examples of using this builder:
// 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 (for example, 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("...")
.bodyValue(multipartBody)
.retrieve()
.bodyToMono(Void.class)
- Since:
- 5.0.2
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Sam Brannen
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceBuilder that allows for further customization of part headers. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new, empty instance of theMultipartBodyBuilder. -
Method Summary
Modifier and TypeMethodDescription<T, P extends Publisher<T>>
MultipartBodyBuilder.PartBuilderAdd a part fromPublishercontent.<T, P extends Publisher<T>>
MultipartBodyBuilder.PartBuilderasyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference) Variant ofasyncPart(String, Publisher, Class)with aParameterizedTypeReferencefor the element type information.build()Return aMultiValueMapwith the configured parts.Add a part where the Object may be: String -- form fieldResource-- file part Object -- content to be encoded (for example, to JSON).Variant ofpart(String, Object)that also accepts a MediaType.
-
Constructor Details
-
MultipartBodyBuilder
public MultipartBodyBuilder()Creates a new, empty instance of theMultipartBodyBuilder.
-
-
Method Details
-
part
Add a part where the Object may be:- String -- form field
Resource-- file part- Object -- content to be encoded (for example, to JSON).
HttpEntity-- part content and headers although generally it's easier to add headers through the returned builderPart-- a part from a server request
- Parameters:
name- the name of the part to addpart- the part data- Returns:
- builder that allows for further customization of part headers
-
part
public MultipartBodyBuilder.PartBuilder part(String name, Object part, @Nullable MediaType contentType) Variant ofpart(String, Object)that also accepts a MediaType.- Parameters:
name- the name of the part to addpart- the part datacontentType- the media type to help with encoding the part- Returns:
- builder that allows for further customization of part headers
-
asyncPart
public <T, P extends Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, Class<T> elementClass) Add a part fromPublishercontent.- Parameters:
name- the name of the part to addpublisher- a Publisher of content for the partelementClass- the type of elements contained in the publisher- Returns:
- builder that allows for further customization of part headers
-
asyncPart
public <T, P extends Publisher<T>> MultipartBodyBuilder.PartBuilder asyncPart(String name, P publisher, ParameterizedTypeReference<T> typeReference) Variant ofasyncPart(String, Publisher, Class)with aParameterizedTypeReferencefor the element type information.- Parameters:
name- the name of the part to addpublisher- the part contentstypeReference- the type of elements contained in the publisher- Returns:
- builder that allows for further customization of part headers
-
build
Return aMultiValueMapwith the configured parts.
-