org.springframework.http.converter

## Interface HttpMessageConverter<T>

All Known Subinterfaces:
  GenericHttpMessageConverter<T>

All Known Implementing Classes:
  AbstractHttpMessageConverter, AbstractJaxb2HttpMessageConverter, AbstractWireFeedHttpMessageConverter, AbstractXmlHttpMessageConverter, AllEncompassingFormHttpMessageConverter, AtomFeedHttpMessageConverter, BufferedImageHttpMessageConverter, ByteArrayHttpMessageConverter, FormHttpMessageConverter, Jaxb2CollectionHttpMessageConverter, Jaxb2RootElementHttpMessageConverter, MappingJackson2HttpMessageConverter, MappingJacksonHttpMessageConverter, MarshallingHttpMessageConverter, ObjectToStringHttpMessageConverter, ResourceHttpMessageConverter, RssChannelHttpMessageConverter, SourceHttpMessageConverter, StringHttpMessageConverter, XmlAwareFormHttpMessageConverter

    public interface HttpMessageConverter<T>

Strategy interface that specifies a converter that can convert from and to HTTP requests and responses.

Since:
  3.0
Author:
  Arjen Poutsma, Juergen Hoeller

### Method Summary

Methods
`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 `MediaType` objects supported by this converter.
`T` `read(Class<? extends T> clazz, HttpInputMessage inputMessage)` Read an object of the given type form the given input message, and returns it.
`void` `write(T t, MediaType contentType, HttpOutputMessage outputMessage)` Write an given object to the given output message.

### Method Detail

#### canRead

    boolean canRead(Class<?> clazz,
                  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,
                   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 `MediaType` objects supported by this converter.

Returns:
  the list of supported media types

#### read

    T read(Class<? extends T> clazz,
         HttpInputMessage inputMessage)
           throws IOException,
                  HttpMessageNotReadableException

Read an object of the given type form 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,
             MediaType contentType,
             HttpOutputMessage outputMessage)
               throws IOException,
                      HttpMessageNotWritableException

Write an 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