类 BodyInserters
BodyInserter implementations.- 从以下版本开始:
- 4.0
- 作者:
- Arjen Poutsma, Rossen Stoyanchev, Sebastien Deleuze, Harry Yang
-
嵌套类概要
嵌套类修饰符和类型类说明private static classprivate static classstatic interfaceExtension ofBodyInserterthat allows for adding form data or multipart form data.static interfaceExtension ofBodyInserters.FormInserterthat allows for adding asynchronous parts. -
字段概要
字段修饰符和类型字段说明private static final BodyInserter<Void,ReactiveHttpOutputMessage> private static final cn.taketoday.core.ResolvableTypeprivate static final cn.taketoday.core.ResolvableTypeprivate static final cn.taketoday.core.ReactiveAdapterRegistryprivate static final cn.taketoday.core.ResolvableTypeprivate static final cn.taketoday.core.ResolvableType -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明private static <T> HttpMessageWriter<T>cast(HttpMessageWriter<?> messageWriter) static <T> BodyInserter<T,ReactiveHttpOutputMessage> empty()Inserter that does not write.private static <T> HttpMessageWriter<T>findWriter(BodyInserter.Context context, cn.taketoday.core.ResolvableType elementType, MediaType mediaType) static <T extends org.reactivestreams.Publisher<cn.taketoday.core.io.buffer.DataBuffer>>
BodyInserter<T,ReactiveHttpOutputMessage> fromDataBuffers(T publisher) Inserter to write the givenPublisher<DataBuffer>to the body.static BodyInserters.FormInserter<String>fromFormData(cn.taketoday.util.MultiValueMap<String, String> formData) Return aBodyInserters.FormInserterto write the givenMultiValueMapas URL-encoded form data.static BodyInserters.FormInserter<String>fromFormData(String name, String value) Return aBodyInserters.FormInserterto write the given key-value pair as URL-encoded form data.static <T,P extends org.reactivestreams.Publisher<T>>
BodyInserters.MultipartInserterfromMultipartAsyncData(String name, P publisher, cn.taketoday.core.ParameterizedTypeReference<T> typeReference) Variant offromMultipartAsyncData(String, Publisher, Class)that accepts aParameterizedTypeReferencefor the element type, which allows specifying generic type information.static <T,P extends org.reactivestreams.Publisher<T>>
BodyInserters.MultipartInserterfromMultipartAsyncData(String name, P publisher, Class<T> elementClass) Return aBodyInserters.MultipartInserterto write the given asynchronous parts, as multipart data.fromMultipartData(cn.taketoday.util.MultiValueMap<String, ?> multipartData) Return aBodyInserters.MultipartInserterto write the givenMultiValueMapas multipart data.fromMultipartData(String name, Object value) Return aBodyInserters.MultipartInserterto write the given parts, as multipart data.static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, cn.taketoday.core.ParameterizedTypeReference<?> elementTypeRef) Inserter to write the given producer of value(s) which must be aPublisheror another producer adaptable to aPublisherviaReactiveAdapterRegistry.static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, Class<?> elementClass) Inserter to write the given producer of value(s) which must be aPublisheror another producer adaptable to aPublisherviaReactiveAdapterRegistry.static <T,P extends org.reactivestreams.Publisher<T>>
BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, cn.taketoday.core.ParameterizedTypeReference<T> elementTypeRef) Inserter to write the givenPublisher.static <T,P extends org.reactivestreams.Publisher<T>>
BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, Class<T> elementClass) Inserter to write the givenPublisher.static <T extends cn.taketoday.core.io.Resource>
BodyInserter<T,ReactiveHttpOutputMessage> fromResource(T resource) Inserter to write the givenResource.static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>>
BodyInserter<S,ServerHttpResponse> fromServerSentEvents(S eventsPublisher) Inserter to write the givenServerSentEventpublisher.static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromValue(T body) Inserter to write the given value.private static UnsupportedMediaTypeExceptionunsupportedError(cn.taketoday.core.ResolvableType bodyType, BodyInserter.Context context, MediaType mediaType) private static <T> reactor.core.publisher.Mono<Void>write(org.reactivestreams.Publisher<? extends T> input, cn.taketoday.core.ResolvableType type, MediaType mediaType, ReactiveHttpOutputMessage message, BodyInserter.Context context, HttpMessageWriter<T> writer) private static <M extends ReactiveHttpOutputMessage>
reactor.core.publisher.Mono<Void>writeWithMessageWriters(M outputMessage, BodyInserter.Context context, Object body, cn.taketoday.core.ResolvableType bodyType, cn.taketoday.core.ReactiveAdapter adapter)
-
字段详细资料
-
RESOURCE_TYPE
private static final cn.taketoday.core.ResolvableType RESOURCE_TYPE -
SSE_TYPE
private static final cn.taketoday.core.ResolvableType SSE_TYPE -
FORM_DATA_TYPE
private static final cn.taketoday.core.ResolvableType FORM_DATA_TYPE -
MULTIPART_DATA_TYPE
private static final cn.taketoday.core.ResolvableType MULTIPART_DATA_TYPE -
EMPTY_INSERTER
-
registry
private static final cn.taketoday.core.ReactiveAdapterRegistry registry
-
-
构造器详细资料
-
BodyInserters
public BodyInserters()
-
-
方法详细资料
-
empty
Inserter that does not write.- 返回:
- the inserter
-
fromValue
Inserter to write the given value.Alternatively, consider using the
bodyValue(Object)shortcuts onWebClientandServerResponse.- 类型参数:
T- the type of the body- 参数:
body- the value to write- 返回:
- the inserter to write a single value
- 抛出:
IllegalArgumentException- ifbodyis aPublisheror an instance of a type supported byReactiveAdapterRegistry.getSharedInstance(), for whichfromPublisher(Publisher, Class)orfromProducer(Object, Class)should be used.- 另请参阅:
-
fromProducer
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, Class<?> elementClass) Inserter to write the given producer of value(s) which must be aPublisheror another producer adaptable to aPublisherviaReactiveAdapterRegistry.Alternatively, consider using the
bodyshortcuts onWebClientandServerResponse.- 类型参数:
T- the type of the body- 参数:
producer- the source of body value(s).elementClass- the class of values to be produced- 返回:
- the inserter to write a producer
-
fromProducer
public static <T> BodyInserter<T,ReactiveHttpOutputMessage> fromProducer(T producer, cn.taketoday.core.ParameterizedTypeReference<?> elementTypeRef) Inserter to write the given producer of value(s) which must be aPublisheror another producer adaptable to aPublisherviaReactiveAdapterRegistry.Alternatively, consider using the
bodyshortcuts onWebClientandServerResponse.- 类型参数:
T- the type of the body- 参数:
producer- the source of body value(s).elementTypeRef- the type of values to be produced- 返回:
- the inserter to write a producer
-
fromPublisher
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, Class<T> elementClass) Inserter to write the givenPublisher.Alternatively, consider using the
bodyshortcuts onWebClientandServerResponse.- 类型参数:
T- the type of the elements contained in the publisherP- thePublishertype- 参数:
publisher- the publisher to write withelementClass- the class of elements in the publisher- 返回:
- the inserter to write a
Publisher
-
fromPublisher
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserter<P,ReactiveHttpOutputMessage> fromPublisher(P publisher, cn.taketoday.core.ParameterizedTypeReference<T> elementTypeRef) Inserter to write the givenPublisher.Alternatively, consider using the
bodyshortcuts onWebClientandServerResponse.- 类型参数:
T- the type of the elements contained in the publisherP- thePublishertype- 参数:
publisher- the publisher to write withelementTypeRef- the type of elements contained in the publisher- 返回:
- the inserter to write a
Publisher
-
fromResource
public static <T extends cn.taketoday.core.io.Resource> BodyInserter<T,ReactiveHttpOutputMessage> fromResource(T resource) Inserter to write the givenResource.If the resource can be resolved to a file, it will be copied using zero-copy.
- 类型参数:
T- the type of theResource- 参数:
resource- the resource to write to the output message- 返回:
- the inserter to write a
Publisher
-
fromServerSentEvents
public static <T,S extends org.reactivestreams.Publisher<ServerSentEvent<T>>> BodyInserter<S,ServerHttpResponse> fromServerSentEvents(S eventsPublisher) Inserter to write the givenServerSentEventpublisher.Alternatively, you can provide event data objects via
fromPublisher(Publisher, Class)orfromProducer(Object, Class), and set the "Content-Type" totext/event-stream.- 类型参数:
T- the type of the data elements in theServerSentEvent- 参数:
eventsPublisher- theServerSentEventpublisher to write to the response body- 返回:
- the inserter to write a
ServerSentEventpublisher - 另请参阅:
-
fromFormData
public static BodyInserters.FormInserter<String> fromFormData(cn.taketoday.util.MultiValueMap<String, String> formData) Return aBodyInserters.FormInserterto write the givenMultiValueMapas URL-encoded form data. The returned inserter allows for additional entries to be added viaBodyInserters.FormInserter.with(String, Object).Note that you can also use the
bodyValue(Object)method in the request builders of both theWebClientandWebTestClient. 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 message- 返回:
- the inserter that allows adding more form data
-
fromFormData
Return aBodyInserters.FormInserterto write the given key-value pair as URL-encoded form data. The returned inserter allows for additional entries to be added viaBodyInserters.FormInserter.with(String, Object).- 参数:
name- the key to add to the formvalue- the value to add to the form- 返回:
- the inserter that allows adding more form data
-
fromMultipartData
public static BodyInserters.MultipartInserter fromMultipartData(cn.taketoday.util.MultiValueMap<String, ?> multipartData) Return aBodyInserters.MultipartInserterto write the givenMultiValueMapas multipart data. Values in the map can be an Object or anHttpEntity.Note that you can also build the multipart data externally with
MultipartBodyBuilder, and pass the resulting map directly to thebodyValue(Object)shortcut method inWebClient.- 参数:
multipartData- the form data to write to the output message- 返回:
- the inserter that allows adding more parts
- 另请参阅:
-
fromMultipartData
Return aBodyInserters.MultipartInserterto write the given parts, as multipart data. Values in the map can be an Object or anHttpEntity.Note that you can also build the multipart data externally with
MultipartBodyBuilder, and pass the resulting map directly to thebodyValue(Object)shortcut method inWebClient.- 参数:
name- the part namevalue- the part value, an Object orHttpEntity- 返回:
- the inserter that allows adding more parts
-
fromMultipartAsyncData
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserters.MultipartInserter fromMultipartAsyncData(String name, P publisher, Class<T> elementClass) Return aBodyInserters.MultipartInserterto 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 thebodyValue(Object)shortcut method inWebClient.- 参数:
name- the part namepublisher- the publisher that forms the part valueelementClass- the class contained in thepublisher- 返回:
- the inserter that allows adding more parts
-
fromMultipartAsyncData
public static <T,P extends org.reactivestreams.Publisher<T>> BodyInserters.MultipartInserter fromMultipartAsyncData(String name, P publisher, cn.taketoday.core.ParameterizedTypeReference<T> typeReference) Variant offromMultipartAsyncData(String, Publisher, Class)that accepts aParameterizedTypeReferencefor 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 thebodyValue(Object)shortcut method inWebClient.- 参数:
name- the part namepublisher- the publisher that forms the part valuetypeReference- the type contained in thepublisher- 返回:
- the inserter that allows adding more parts
-
fromDataBuffers
public static <T extends org.reactivestreams.Publisher<cn.taketoday.core.io.buffer.DataBuffer>> BodyInserter<T,ReactiveHttpOutputMessage> fromDataBuffers(T publisher) Inserter to write the givenPublisher<DataBuffer>to the body.- 类型参数:
T- the type of the publisher- 参数:
publisher- the data buffer publisher to write- 返回:
- the inserter to write directly to the body
- 另请参阅:
-
writeWithMessageWriters
private static <M extends ReactiveHttpOutputMessage> reactor.core.publisher.Mono<Void> writeWithMessageWriters(M outputMessage, BodyInserter.Context context, Object body, cn.taketoday.core.ResolvableType bodyType, @Nullable cn.taketoday.core.ReactiveAdapter adapter) -
unsupportedError
private static UnsupportedMediaTypeException unsupportedError(cn.taketoday.core.ResolvableType bodyType, BodyInserter.Context context, @Nullable MediaType mediaType) -
write
private static <T> reactor.core.publisher.Mono<Void> write(org.reactivestreams.Publisher<? extends T> input, cn.taketoday.core.ResolvableType type, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, BodyInserter.Context context, HttpMessageWriter<T> writer) -
findWriter
private static <T> HttpMessageWriter<T> findWriter(BodyInserter.Context context, cn.taketoday.core.ResolvableType elementType, @Nullable MediaType mediaType) -
cast
-