## org.springframework.http.converter
Interface HttpMessageConverter<T>

All Known Implementing Classes:
  AbstractHttpMessageConverter, AbstractJaxb2HttpMessageConverter, AbstractWireFeedHttpMessageConverter, AbstractXmlHttpMessageConverter, AtomFeedHttpMessageConverter, BufferedImageHttpMessageConverter, ByteArrayHttpMessageConverter, FormHttpMessageConverter, Jaxb2RootElementHttpMessageConverter, MappingJacksonHttpMessageConverter, MarshallingHttpMessageConverter, 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
`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