HTTP 消息转换

该模块包含用于通过 和 读取和写入 HTTP 请求和响应正文的接口。 实例用于客户端(例如,在 )和服务器端(例如,在 Spring MVC REST 控制器中)。spring-webHttpMessageConverterInputStreamOutputStreamHttpMessageConverterRestClientspring-doc.cn

框架中提供了主媒体 (MIME) 类型的具体实现,默认情况下,它们在客户端和 server 端注册到 and(请参阅 配置消息转换器)。RestClientRestTemplateRequestMappingHandlerAdapterspring-doc.cn

的几种实现如下。 有关完整列表,请参阅 HttpMessageConverter Javadoc。 对于所有转换器,都使用默认媒体类型,但您可以通过设置该属性来覆盖它。HttpMessageConvertersupportedMediaTypesspring-doc.cn

表 1.HttpMessageConverter 实现
消息转换器 描述

StringHttpMessageConverterspring-doc.cn

可以从 HTTP 请求和响应中读取和写入实例的实现。 默认情况下,此转换器支持所有文本媒体类型(),并使用 of .HttpMessageConverterStringtext/*Content-Typetext/plainspring-doc.cn

FormHttpMessageConverterspring-doc.cn

可以从 HTTP 请求和响应中读取和写入表单数据的实现。 默认情况下,此转换器读取和写入媒体类型。 表单数据从 . 转换器还可以写入(但不能读取)从 . 默认情况下,支持。 可以支持其他多部分子类型来写入表单数据。 有关更多详细信息,请参阅 javadoc。HttpMessageConverterapplication/x-www-form-urlencodedMultiValueMap<String, String>MultiValueMap<String, Object>multipart/form-dataFormHttpMessageConverterspring-doc.cn

ByteArrayHttpMessageConverterspring-doc.cn

可以从 HTTP 请求和响应中读取和写入字节数组的实现。 默认情况下,此转换器支持所有媒体类型 () 并使用 a of . 您可以通过设置属性并覆盖 来覆盖此属性。HttpMessageConverter*/*Content-Typeapplication/octet-streamsupportedMediaTypesgetContentType(byte[])spring-doc.cn

MarshallingHttpMessageConverterspring-doc.cn

可以使用 Spring 和包中的抽象来读取和写入 XML 的实现。 此转换器需要 and 才能使用。 您可以通过 constructor 或 bean 属性注入这些内容。 默认情况下,此转换器支持 和 。HttpMessageConverterMarshallerUnmarshallerorg.springframework.oxmMarshallerUnmarshallertext/xmlapplication/xmlspring-doc.cn

MappingJackson2HttpMessageConverterspring-doc.cn

可以使用 Jackson 的 . 您可以使用 Jackson 提供的注释根据需要自定义 JSON 映射。 当你需要进一步的控制时(对于需要为特定类型提供自定义 JSON 序列化器/反序列化器的情况),你可以通过属性注入自定义。 默认情况下,此转换器支持 .这需要 dependency。HttpMessageConverterObjectMapperObjectMapperObjectMapperapplication/jsoncom.fasterxml.jackson.core:jackson-databindspring-doc.cn

MappingJackson2XmlHttpMessageConverterspring-doc.cn

一种可以使用 Jackson XML 扩展的 . 您可以根据需要通过使用 JAXB 或 Jackson 提供的注释来自定义 XML 映射。 当你需要进一步的控制时(对于需要为特定类型提供自定义 XML 序列化器/反序列化器的情况),你可以通过属性注入自定义。 默认情况下,此转换器支持 .这需要 dependency。HttpMessageConverterXmlMapperXmlMapperObjectMapperapplication/xmlcom.fasterxml.jackson.dataformat:jackson-dataformat-xmlspring-doc.cn

MappingJackson2CborHttpMessageConverterspring-doc.cn

com.fasterxml.jackson.dataformat:jackson-dataformat-cborspring-doc.cn

SourceHttpMessageConverterspring-doc.cn

可以从 HTTP 请求和响应中读取和写入的实现。 仅支持 、 和 。 默认情况下,此转换器支持 和 。HttpMessageConverterjavax.xml.transform.SourceDOMSourceSAXSourceStreamSourcetext/xmlapplication/xmlspring-doc.cn

GsonHttpMessageConverterspring-doc.cn

可以使用 “Google Gson” 读取和写入 JSON 的实现。 这需要 dependency。HttpMessageConvertercom.google.code.gson:gsonspring-doc.cn

JsonbHttpMessageConverterspring-doc.cn

一种可以使用 Jakarta Json Bind API 读取和写入 JSON 的实现。 这需要依赖项和可用的实现。HttpMessageConverterjakarta.json.bind:jakarta.json.bind-apispring-doc.cn

ProtobufHttpMessageConverterspring-doc.cn

一种可以读取和写入内容类型的二进制格式的 Protobuf 消息的实现。这需要 dependency。HttpMessageConverter"application/x-protobuf"com.google.protobuf:protobuf-javaspring-doc.cn

ProtobufJsonFormatHttpMessageConverterspring-doc.cn

一种可以在 Protobuf 消息中读取和写入 JSON 文档的实现。 这需要 dependency。HttpMessageConvertercom.google.protobuf:protobuf-java-utilspring-doc.cn