public abstract class BodyInserters extends Object
BodyInserter
implementations.Modifier and Type | Class and Description |
---|---|
static interface |
BodyInserters.FormInserter<T>
Extension of
BodyInserter that allows for adding form data or
multipart form data. |
static interface |
BodyInserters.MultipartInserter
Extension of
BodyInserters.FormInserter that allows for adding asynchronous parts. |
Constructor and Description |
---|
BodyInserters() |
Modifier and Type | Method and Description |
---|---|
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
empty()
Inserter that does not write.
|
static <T extends org.reactivestreams.Publisher<DataBuffer>> |
fromDataBuffers(T publisher)
Inserter to write the given
Publisher<DataBuffer> to the body. |
static BodyInserters.FormInserter<String> |
fromFormData(MultiValueMap<String,String> formData)
Return a
BodyInserters.FormInserter to write the given MultiValueMap
as URL-encoded form data. |
static BodyInserters.FormInserter<String> |
fromFormData(String name,
String value)
Return a
BodyInserters.FormInserter to write the given key-value pair as
URL-encoded form data. |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromMultipartAsyncData(String name,
P publisher,
Class<T> elementClass)
Return a
BodyInserters.MultipartInserter to write the given asynchronous parts,
as multipart data. |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromMultipartAsyncData(String name,
P publisher,
ParameterizedTypeReference<T> typeReference)
Variant of
fromMultipartAsyncData(String, Publisher, Class) that
accepts a ParameterizedTypeReference for the element type, which
allows specifying generic type information. |
static BodyInserters.MultipartInserter |
fromMultipartData(MultiValueMap<String,?> multipartData)
Return a
BodyInserters.MultipartInserter to write the given
MultiValueMap as multipart data. |
static BodyInserters.MultipartInserter |
fromMultipartData(String name,
Object value)
Return a
BodyInserters.MultipartInserter to write the given parts,
as multipart data. |
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
fromObject(T body)
Deprecated.
As of Spring Framework 5.2, in favor of
fromValue(Object) |
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
fromProducer(T producer,
Class<?> elementClass)
Inserter to write the given producer of value(s) which must be a
Publisher
or another producer adaptable to a Publisher via
ReactiveAdapterRegistry . |
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
fromProducer(T producer,
ParameterizedTypeReference<?> elementTypeRef)
Inserter to write the given producer of value(s) which must be a
Publisher
or another producer adaptable to a Publisher via
ReactiveAdapterRegistry . |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromPublisher(P publisher,
Class<T> elementClass)
Inserter to write the given
Publisher . |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromPublisher(P publisher,
ParameterizedTypeReference<T> elementTypeRef)
Inserter to write the given
Publisher . |
static <T extends Resource> |
fromResource(T resource)
Inserter to write the given
Resource . |
static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>> |
fromServerSentEvents(S eventsPublisher)
Inserter to write the given
ServerSentEvent publisher. |
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
fromValue(T body)
Inserter to write the given value.
|
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> empty()
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromValue(T body)
Alternatively, consider using the bodyValue(Object)
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the bodybody
- the value to writeIllegalArgumentException
- if body
is a Publisher
or an
instance of a type supported by ReactiveAdapterRegistry.getSharedInstance()
,
for which fromPublisher(Publisher, Class)
or
fromProducer(Object, Class)
should be used.fromPublisher(Publisher, Class)
,
fromProducer(Object, Class)
@Deprecated public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromObject(T body)
fromValue(Object)
Alternatively, consider using the bodyValue(Object)
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the bodybody
- the body to write to the responseIllegalArgumentException
- if body
is a Publisher
or an
instance of a type supported by ReactiveAdapterRegistry.getSharedInstance()
,
for which fromPublisher(Publisher, Class)
or
fromProducer(Object, Class)
should be used.fromPublisher(Publisher, Class)
,
fromProducer(Object, Class)
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, Class<?> elementClass)
Publisher
or another producer adaptable to a Publisher
via
ReactiveAdapterRegistry
.
Alternatively, consider using the body
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the bodyproducer
- the source of body value(s).elementClass
- the class of values to be producedpublic static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, ParameterizedTypeReference<?> elementTypeRef)
Publisher
or another producer adaptable to a Publisher
via
ReactiveAdapterRegistry
.
Alternatively, consider using the body
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the bodyproducer
- the source of body value(s).elementTypeRef
- the type of values to be producedpublic static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, Class<T> elementClass)
Publisher
.
Alternatively, consider using the body
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the elements contained in the publisherP
- the Publisher
typepublisher
- the publisher to write withelementClass
- the class of elements in the publisherPublisher
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, ParameterizedTypeReference<T> elementTypeRef)
Publisher
.
Alternatively, consider using the body
shortcuts on
WebClient
and
ServerResponse
.
T
- the type of the elements contained in the publisherP
- the Publisher
typepublisher
- the publisher to write withelementTypeRef
- the type of elements contained in the publisherPublisher
public static <T extends Resource> BodyInserter<T,ReactiveHttpOutputMessage> fromResource(T resource)
Resource
.
If the resource can be resolved to a file, it will be copied using zero-copy.
T
- the type of the Resource
resource
- the resource to write to the output messagePublisher
public static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>> BodyInserter<S,ServerHttpResponse> fromServerSentEvents(S eventsPublisher)
ServerSentEvent
publisher.
Alternatively, you can provide event data objects via
fromPublisher(Publisher, Class)
or fromProducer(Object, Class)
,
and set the "Content-Type" to text/event-stream
.
T
- the type of the data elements in the ServerSentEvent
eventsPublisher
- the ServerSentEvent
publisher to write to the response bodyServerSentEvent
publisherpublic static BodyInserters.FormInserter<String> fromFormData(MultiValueMap<String,String> formData)
BodyInserters.FormInserter
to write the given MultiValueMap
as URL-encoded form data. The returned inserter allows for additional
entries to be added via BodyInserters.FormInserter.with(String, Object)
.
Note that you can also use the bodyValue(Object)
method in the
request builders of both the WebClient
and WebTestClient
.
In that case the setting of the request content type is also not required,
just be sure the map contains String values only or otherwise it would be
interpreted as a multipart request.
formData
- the form data to write to the output messagepublic static BodyInserters.FormInserter<String> fromFormData(String name, String value)
BodyInserters.FormInserter
to write the given key-value pair as
URL-encoded form data. The returned inserter allows for additional
entries to be added via BodyInserters.FormInserter.with(String, Object)
.name
- the key to add to the formvalue
- the value to add to the formpublic static BodyInserters.MultipartInserter fromMultipartData(MultiValueMap<String,?> multipartData)
BodyInserters.MultipartInserter
to write the given
MultiValueMap
as multipart data. Values in the map can be an
Object or an HttpEntity
.
Note that you can also build the multipart data externally with
MultipartBodyBuilder
, and pass the resulting map directly to the
bodyValue(Object)
shortcut method in WebClient
.
multipartData
- the form data to write to the output messageMultipartBodyBuilder
public static BodyInserters.MultipartInserter fromMultipartData(String name, Object value)
BodyInserters.MultipartInserter
to write the given parts,
as multipart data. Values in the map can be an Object or an
HttpEntity
.
Note that you can also build the multipart data externally with
MultipartBodyBuilder
, and pass the resulting map directly to the
bodyValue(Object)
shortcut method in WebClient
.
name
- the part namevalue
- the part value, an Object or HttpEntity
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserters.MultipartInserter fromMultipartAsyncData(String name, P publisher, Class<T> elementClass)
BodyInserters.MultipartInserter
to write the given asynchronous parts,
as multipart data.
Note that you can also build the multipart data externally with
MultipartBodyBuilder
, and pass the resulting map directly to the
bodyValue(Object)
shortcut method in WebClient
.
name
- the part namepublisher
- the publisher that forms the part valueelementClass
- the class contained in the publisher
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserters.MultipartInserter fromMultipartAsyncData(String name, P publisher, ParameterizedTypeReference<T> typeReference)
fromMultipartAsyncData(String, Publisher, Class)
that
accepts a ParameterizedTypeReference
for the element type, which
allows specifying generic type information.
Note that you can also build the multipart data externally with
MultipartBodyBuilder
, and pass the resulting map directly to the
bodyValue(Object)
shortcut method in WebClient
.
name
- the part namepublisher
- the publisher that forms the part valuetypeReference
- the type contained in the publisher
public static <T extends org.reactivestreams.Publisher<DataBuffer>> BodyInserter<T,ReactiveHttpOutputMessage> fromDataBuffers(T publisher)
Publisher<DataBuffer>
to the body.T
- the type of the publisherpublisher
- the data buffer publisher to writeReactiveHttpOutputMessage.writeWith(Publisher)