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
    Modifier and Type | Method and 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 `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