public abstract class BodyInserters
extends java.lang.Object
BodyInserter
that write various bodies, such a reactive streams,
server-sent events, resources, etc.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()
Return an empty
BodyInserter that writes nothing. |
static <T extends org.reactivestreams.Publisher<DataBuffer>> |
fromDataBuffers(T publisher)
Inserter to write the given
Publisher<DataBuffer> to the body. |
static BodyInserters.FormInserter<java.lang.String> |
fromFormData(MultiValueMap<java.lang.String,java.lang.String> formData)
Return a
BodyInserters.FormInserter to write the given MultiValueMap
as URL-encoded form data. |
static BodyInserters.FormInserter<java.lang.String> |
fromFormData(java.lang.String name,
java.lang.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(java.lang.String name,
P publisher,
java.lang.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(java.lang.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<java.lang.String,?> multipartData)
Return a
BodyInserters.MultipartInserter to write the given
MultiValueMap as multipart data. |
static BodyInserters.MultipartInserter |
fromMultipartData(java.lang.String name,
java.lang.Object value)
Return a
BodyInserters.MultipartInserter to write the given parts,
as multipart data. |
static <T> BodyInserter<T,ReactiveHttpOutputMessage> |
fromObject(T body)
Return a
BodyInserter that writes the given single object. |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromPublisher(P publisher,
java.lang.Class<T> elementClass)
Return a
BodyInserter that writes the given Publisher . |
static <T,P extends org.reactivestreams.Publisher<T>> |
fromPublisher(P publisher,
ParameterizedTypeReference<T> typeReference)
Return a
BodyInserter that writes the given Publisher . |
static <T extends Resource> |
fromResource(T resource)
Return a
BodyInserter that writes the given Resource . |
static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>> |
fromServerSentEvents(S eventsPublisher)
Return a
BodyInserter that writes the given ServerSentEvent publisher. |
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> empty()
BodyInserter
that writes nothing.BodyInserter
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromObject(T body)
BodyInserter
that writes the given single object.
Note also that
WebClient
and
ServerResponse
each offer a syncBody(Object)
shortcut for providing an Object
as the body.
body
- the body of the responseBodyInserter
that writes a single objectpublic static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, java.lang.Class<T> elementClass)
BodyInserter
that writes the given Publisher
.
Note also that
WebClient
and
ServerResponse
each offer body
shortcut methods for providing a Publisher as the body.
T
- the type of the elements contained in the publisherP
- the type of the Publisher
publisher
- the publisher to stream to the response bodyelementClass
- the class of elements contained in the publisherBodyInserter
that writes a Publisher
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, ParameterizedTypeReference<T> typeReference)
BodyInserter
that writes the given Publisher
.
Note also that
WebClient
and
ServerResponse
each offer body
shortcut methods for providing a Publisher as the body.
T
- the type of the elements contained in the publisherP
- the type of the Publisher
publisher
- the publisher to stream to the response bodytypeReference
- the type of elements contained in the publisherBodyInserter
that writes a Publisher
public static <T extends Resource> BodyInserter<T,ReactiveHttpOutputMessage> fromResource(T resource)
BodyInserter
that writes the given 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 messageBodyInserter
that writes a Publisher
public static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>> BodyInserter<S,ServerHttpResponse> fromServerSentEvents(S eventsPublisher)
BodyInserter
that writes the given ServerSentEvent
publisher.
Note that a SSE BodyInserter
can also be obtained by passing a stream of strings
or POJOs (to be encoded as JSON) to fromPublisher(Publisher, Class)
, and specifying a
text/event-stream
Content-Type.
T
- the type of the elements contained in the ServerSentEvent
eventsPublisher
- the ServerSentEvent
publisher to write to the response bodyBodyInserter
that writes a ServerSentEvent
publisherpublic static BodyInserters.FormInserter<java.lang.String> fromFormData(MultiValueMap<java.lang.String,java.lang.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 syncBody(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<java.lang.String> fromFormData(java.lang.String name, java.lang.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<java.lang.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
syncBody(Object)
shortcut method in WebClient
.
multipartData
- the form data to write to the output messageMultipartBodyBuilder
public static BodyInserters.MultipartInserter fromMultipartData(java.lang.String name, java.lang.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
syncBody(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(java.lang.String name, P publisher, java.lang.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
syncBody(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(java.lang.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
syncBody(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)