Package org.springframework.http.converter

# Interface HttpMessageConverter<T>

Type Parameters:
  `T` - the converted object type

All Known Subinterfaces:
  `GenericHttpMessageConverter<T>`, `SmartHttpMessageConverter<T>`

All Known Implementing Classes:
  `AbstractGenericHttpMessageConverter`, `AbstractHttpMessageConverter`, `AbstractJackson2HttpMessageConverter`, `AbstractJaxb2HttpMessageConverter`, `AbstractJsonHttpMessageConverter`, `AbstractKotlinSerializationHttpMessageConverter`, `AbstractSmartHttpMessageConverter`, `AbstractWireFeedHttpMessageConverter`, `AbstractXmlHttpMessageConverter`, `AllEncompassingFormHttpMessageConverter`, `AtomFeedHttpMessageConverter`, `BufferedImageHttpMessageConverter`, `ByteArrayHttpMessageConverter`, `FormHttpMessageConverter`, `GsonHttpMessageConverter`, `Jaxb2CollectionHttpMessageConverter`, `Jaxb2RootElementHttpMessageConverter`, `JsonbHttpMessageConverter`, `KotlinSerializationBinaryHttpMessageConverter`, `KotlinSerializationCborHttpMessageConverter`, `KotlinSerializationJsonHttpMessageConverter`, `KotlinSerializationProtobufHttpMessageConverter`, `KotlinSerializationStringHttpMessageConverter`, `MappingJackson2CborHttpMessageConverter`, `MappingJackson2HttpMessageConverter`, `MappingJackson2SmileHttpMessageConverter`, `MappingJackson2XmlHttpMessageConverter`, `MappingJackson2YamlHttpMessageConverter`, `MarshallingHttpMessageConverter`, `ObjectToStringHttpMessageConverter`, `ProtobufHttpMessageConverter`, `ProtobufJsonFormatHttpMessageConverter`, `ResourceHttpMessageConverter`, `ResourceRegionHttpMessageConverter`, `RssChannelHttpMessageConverter`, `SourceHttpMessageConverter`, `StringHttpMessageConverter`

public interface HttpMessageConverter<T>
Strategy interface for converting from and to HTTP requests and responses.

Since:
  3.0
Author:
  Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev
See Also:
  - `SmartHttpMessageConverter`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead(Class<?> clazz, MediaType mediaType)`
Indicates whether the given class can be read by this converter.
`boolean`
`canWrite(Class<?> clazz, MediaType mediaType)`
Indicates whether the given class can be written by this converter.
`List<MediaType>`
`getSupportedMediaTypes()`
Return the list of media types supported by this converter.
`default List<MediaType>`
`getSupportedMediaTypes(Class<?> clazz)`
Return the list of media types supported by this converter for the given class.
`T`
`read(Class<? extends T> clazz, HttpInputMessage inputMessage)`
Read an object of the given type from the given input message, and returns it.
`void`
`write(T t, MediaType contentType, HttpOutputMessage outputMessage)`
Write a given object to the given output message.

## Method Details

### canRead

boolean canRead(Class<?> clazz, @Nullable MediaType mediaType)
Indicates whether the given class can be read by this converter.

Parameters:
  `clazz` - the class to test for readability
  `mediaType` - the media type to read (can be `null` if not specified); typically the value of a `Content-Type` header.
Returns:
  `true` if readable; `false` otherwise

### canWrite

boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType)
Indicates whether the given class can be written by this converter.

Parameters:
  `clazz` - the class to test for writability
  `mediaType` - the media type to write (can be `null` if not specified); typically the value of an `Accept` header.
Returns:
  `true` if writable; `false` otherwise

### getSupportedMediaTypes

List<MediaType> getSupportedMediaTypes()
Return the list of media types supported by this converter. The list may not apply to every possible target element type and calls to this method should typically be guarded via `canWrite(clazz, null`. The list may also exclude MIME types supported only for a specific class. Alternatively, use `getSupportedMediaTypes(Class)` for a more precise list.

Returns:
  the list of supported media types

### getSupportedMediaTypes

default List<MediaType> getSupportedMediaTypes(Class<?> clazz)
Return the list of media types supported by this converter for the given class. The list may differ from `getSupportedMediaTypes()` if the converter does not support the given Class or if it supports it only for a subset of media types.

Parameters:
  `clazz` - the type of class to check
Returns:
  the list of media types supported for the given class
Since:
  5.3.4

### read

T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
Read an object of the given type from the given input message, and returns it.

Parameters:
  `clazz` - the type of object to return. This type must have previously been passed to the `canRead` method of this interface, which must have returned `true`.
  `inputMessage` - the HTTP input message to read from
Returns:
  the converted object
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotReadableException` - in case of conversion errors

### write

void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
Write a given object to the given output message.

Parameters:
  `t` - the object to write to the output message. The type of this object must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
  `contentType` - the content type to use when writing. May be `null` to indicate that the default content type of the converter must be used. If not `null`, this media type must have previously been passed to the `canWrite` method of this interface, which must have returned `true`.
  `outputMessage` - the message to write to
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotWritableException` - in case of conversion errors