Package org.springframework.http

# Interface ReactiveHttpOutputMessage

All Superinterfaces:
  `HttpMessage`

All Known Subinterfaces:
  `ClientHttpRequest`, `ServerHttpResponse`, `ZeroCopyHttpOutputMessage`

All Known Implementing Classes:
  `AbstractClientHttpRequest`, `AbstractListenerServerHttpResponse`, `AbstractServerHttpResponse`, `ClientHttpRequestDecorator`, `HttpHeadResponseDecorator`, `ServerHttpResponseDecorator`

public interface ReactiveHttpOutputMessage extends HttpMessage
A "reactive" HTTP output message that accepts output as a `Publisher`.

Typically implemented by an HTTP request on the client-side or an HTTP response on the server-side.

Since:
  5.0
Author:
  Arjen Poutsma, Sebastien Deleuze

## Method Summary

Modifier and Type
Method
Description
`void`
`beforeCommit(Supplier<? extends reactor.core.publisher.Mono<Void>> action)`
Register an action to apply just before the HttpOutputMessage is committed.
`org.springframework.core.io.buffer.DataBufferFactory`
`bufferFactory()`
Return a `DataBufferFactory` that can be used to create the body.
`boolean`
`isCommitted()`
Whether the HttpOutputMessage is committed.
`reactor.core.publisher.Mono<Void>`
`setComplete()`
Indicate that message handling is complete, allowing for any cleanup or end-of-processing tasks to be performed such as applying header changes made via `HttpMessage.getHeaders()` to the underlying HTTP message (if not applied already).
`reactor.core.publisher.Mono<Void>`
`writeAndFlushWith(Publisher<? extends Publisher<? extends org.springframework.core.io.buffer.DataBuffer>> body)`
Use the given `Publisher` of `Publishers` to write the body of the HttpOutputMessage to the underlying HTTP layer, flushing after each `Publisher<DataBuffer>`.
`reactor.core.publisher.Mono<Void>`
`writeWith(Publisher<? extends org.springframework.core.io.buffer.DataBuffer> body)`
Use the given `Publisher` to write the body of the message to the underlying HTTP layer.

### Methods inherited from interface org.springframework.http.HttpMessage

`getHeaders`

## Method Details

### bufferFactory

org.springframework.core.io.buffer.DataBufferFactory bufferFactory()
Return a `DataBufferFactory` that can be used to create the body.

Returns:
  a buffer factory
See Also:
  - `writeWith(Publisher)`

### beforeCommit

void beforeCommit(Supplier<? extends reactor.core.publisher.Mono<Void>> action)
Register an action to apply just before the HttpOutputMessage is committed.

Note: the supplied action must be properly deferred, for example, via `Mono.defer(java.util.function.Supplier<? extends reactor.core.publisher.Mono<? extends T>>)` or `Mono.fromRunnable(java.lang.Runnable)`, to ensure it's executed in the right order, relative to other actions.

Parameters:
  `action` - the action to apply

### isCommitted

boolean isCommitted()
Whether the HttpOutputMessage is committed.

### writeWith

reactor.core.publisher.Mono<Void> writeWith(Publisher<? extends org.springframework.core.io.buffer.DataBuffer> body)
Use the given `Publisher` to write the body of the message to the underlying HTTP layer.

Parameters:
  `body` - the body content publisher
Returns:
  a `Mono` that indicates completion or error

### writeAndFlushWith

reactor.core.publisher.Mono<Void> writeAndFlushWith(Publisher<? extends Publisher<? extends org.springframework.core.io.buffer.DataBuffer>> body)
Use the given `Publisher` of `Publishers` to write the body of the HttpOutputMessage to the underlying HTTP layer, flushing after each `Publisher<DataBuffer>`.

Parameters:
  `body` - the body content publisher
Returns:
  a `Mono` that indicates completion or error

### setComplete

reactor.core.publisher.Mono<Void> setComplete()
Indicate that message handling is complete, allowing for any cleanup or end-of-processing tasks to be performed such as applying header changes made via `HttpMessage.getHeaders()` to the underlying HTTP message (if not applied already).

This method should be automatically invoked at the end of message processing so typically applications should not have to invoke it. If invoked multiple times it should have no side effects.

Returns:
  a `Mono` that indicates completion or error