类 ResourceHttpMessageWriter
java.lang.Object
cn.taketoday.http.codec.ResourceHttpMessageWriter
- 所有已实现的接口:
HttpMessageWriter<cn.taketoday.core.io.Resource>
public class ResourceHttpMessageWriter
extends Object
implements HttpMessageWriter<cn.taketoday.core.io.Resource>
HttpMessageWriter that can write a Resource.
Also an implementation of HttpMessageWriter with support for writing one
or more ResourceRegion's based on the HTTP ranges specified in the request.
For reading to a Resource, use ResourceDecoder wrapped with
DecoderHttpMessageReader.
- 从以下版本开始:
- 4.0
- 作者:
- Arjen Poutsma, Brian Clozel, Rossen Stoyanchev, Harry Yang
- 另请参阅:
-
ResourceEncoderResourceRegionEncoderHttpRange
-
字段概要
字段修饰符和类型字段说明private final cn.taketoday.core.codec.ResourceEncoderprivate static final cn.taketoday.logging.Loggerprivate static final cn.taketoday.core.ResolvableTypeprivate final cn.taketoday.core.codec.ResourceRegionEncoder -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明reactor.core.publisher.Mono<Void>addDefaultHeaders(ReactiveHttpOutputMessage message, cn.taketoday.core.io.Resource resource, MediaType contentType, Map<String, Object> hints) Adds the default headers for the given resource to the given message.booleanWhether the given object type is supported by this writer.private reactor.core.publisher.Mono<Void>encodeAndWriteRegions(org.reactivestreams.Publisher<? extends cn.taketoday.core.io.ResourceRegion> publisher, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) private static MediaTypegetResourceMediaType(MediaType mediaType, cn.taketoday.core.io.Resource resource, Map<String, Object> hints) Return the list of media types supported by this Writer.private static reactor.core.publisher.Mono<Long>lengthOf(cn.taketoday.core.io.Resource resource) reactor.core.publisher.Mono<Void>write(org.reactivestreams.Publisher<? extends cn.taketoday.core.io.Resource> inputStream, cn.taketoday.core.ResolvableType actualType, cn.taketoday.core.ResolvableType elementType, MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) Server-side only alternative toHttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)with additional context available.reactor.core.publisher.Mono<Void>write(org.reactivestreams.Publisher<? extends cn.taketoday.core.io.Resource> inputStream, cn.taketoday.core.ResolvableType elementType, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) Write an given stream of object to the output message.private reactor.core.publisher.Mono<Void>writeResource(cn.taketoday.core.io.Resource resource, cn.taketoday.core.ResolvableType type, MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) private reactor.core.publisher.Mono<Void>writeSingleRegion(cn.taketoday.core.io.ResourceRegion region, ReactiveHttpOutputMessage message, Map<String, Object> hints) private static reactor.core.publisher.Mono<Void>zeroCopy(cn.taketoday.core.io.Resource resource, cn.taketoday.core.io.ResourceRegion region, ReactiveHttpOutputMessage message, Map<String, Object> hints) 从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait从接口继承的方法 cn.taketoday.http.codec.HttpMessageWriter
getWritableMediaTypes
-
字段详细资料
-
logger
private static final cn.taketoday.logging.Logger logger -
REGION_TYPE
private static final cn.taketoday.core.ResolvableType REGION_TYPE -
encoder
private final cn.taketoday.core.codec.ResourceEncoder encoder -
mediaTypes
-
regionEncoder
private final cn.taketoday.core.codec.ResourceRegionEncoder regionEncoder
-
-
构造器详细资料
-
ResourceHttpMessageWriter
public ResourceHttpMessageWriter() -
ResourceHttpMessageWriter
public ResourceHttpMessageWriter(int bufferSize)
-
-
方法详细资料
-
canWrite
public boolean canWrite(cn.taketoday.core.ResolvableType elementType, @Nullable MediaType mediaType) 从接口复制的说明:HttpMessageWriterWhether the given object type is supported by this writer.- 指定者:
canWrite在接口中HttpMessageWriter<cn.taketoday.core.io.Resource>- 参数:
elementType- the type of object to checkmediaType- the media type for the write (possiblynull)- 返回:
trueif writable,falseotherwise
-
getWritableMediaTypes
从接口复制的说明:HttpMessageWriterReturn the list of media types supported by this Writer. The list may not apply to every possible target element type and calls to this method should typically be guarded viacanWrite(elementType, null). The list may also exclude media types supported only for a specific element type. Alternatively, useHttpMessageWriter.getWritableMediaTypes(ResolvableType)for a more precise list.- 指定者:
getWritableMediaTypes在接口中HttpMessageWriter<cn.taketoday.core.io.Resource>- 返回:
- the general list of supported media types
-
write
public reactor.core.publisher.Mono<Void> write(org.reactivestreams.Publisher<? extends cn.taketoday.core.io.Resource> inputStream, cn.taketoday.core.ResolvableType elementType, @Nullable MediaType mediaType, ReactiveHttpOutputMessage message, Map<String, Object> hints) 从接口复制的说明:HttpMessageWriterWrite an given stream of object to the output message.- 指定者:
write在接口中HttpMessageWriter<cn.taketoday.core.io.Resource>- 参数:
inputStream- the objects to writeelementType- the type of objects in the stream which must have been previously checked viaHttpMessageWriter.canWrite(ResolvableType, MediaType)mediaType- the content type for the write (possiblynullto indicate that the default content type of the writer must be used)message- the message to write tohints- additional information about how to encode and write- 返回:
- indicates completion or error
-
writeResource
-
addDefaultHeaders
public reactor.core.publisher.Mono<Void> addDefaultHeaders(ReactiveHttpOutputMessage message, cn.taketoday.core.io.Resource resource, @Nullable MediaType contentType, Map<String, Object> hints) Adds the default headers for the given resource to the given message. -
getResourceMediaType
-
lengthOf
-
zeroCopy
@Nullable private static reactor.core.publisher.Mono<Void> zeroCopy(cn.taketoday.core.io.Resource resource, @Nullable cn.taketoday.core.io.ResourceRegion region, ReactiveHttpOutputMessage message, Map<String, Object> hints) -
write
public reactor.core.publisher.Mono<Void> write(org.reactivestreams.Publisher<? extends cn.taketoday.core.io.Resource> inputStream, @Nullable cn.taketoday.core.ResolvableType actualType, cn.taketoday.core.ResolvableType elementType, @Nullable MediaType mediaType, ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> hints) 从接口复制的说明:HttpMessageWriterServer-side only alternative toHttpMessageWriter.write(Publisher, ResolvableType, MediaType, ReactiveHttpOutputMessage, Map)with additional context available.- 指定者:
write在接口中HttpMessageWriter<cn.taketoday.core.io.Resource>actualType- the actual return type of the method that returned the value; for annotated controllers, theParametercan be accessed viaResolvableType.getSource().elementType- the type of Objects in the input streammediaType- the content type to use (possiblynullindicating the default content type of the writer should be used)request- the current requestresponse- the current response- 返回:
- a
Monothat indicates completion of writing or error
-
writeSingleRegion
private reactor.core.publisher.Mono<Void> writeSingleRegion(cn.taketoday.core.io.ResourceRegion region, ReactiveHttpOutputMessage message, Map<String, Object> hints) -
encodeAndWriteRegions
-