Как настроить @RestController для возврата XML вместо JSON?

@RestController — контроллер Spring MVC, предназначенный для REST API Стандартно формирует JSON с помощью MessageConverter (MappingJackson2HttpMessageConverter) Чтобы выдавать XML, требуется подключить Jackson XML или…

Короткий ответ

Что ответить на собеседовании

@RestController — контроллер Spring MVC, предназначенный для REST API Стандартно формирует JSON с помощью MessageConverter (MappingJackson2HttpMessageConverter) Чтобы выдавать XML, требуется подключить Jackson XML или JAXB через другой HttpMessageConverter Тип содержимого указывается как "application/xml" — через headers или @Produces Настройка выполняется добавлением зависимостей и конфигурацией конвертеров в Spring Возврат XML возможен, если конфигурация и модели поддерживают сериализацию в XML Практический пример: интеграция с системами, которым необходим XML (SOAP, legacy сервисы)

Подробный разбор

Ответ с пояснениями

Как настроить @RestController для возврата XML вместо JSON?

  • @RestController — контроллер Spring MVC, предназначенный для REST API
  • Стандартно формирует JSON с помощью MessageConverter (MappingJackson2HttpMessageConverter)
  • Чтобы выдавать XML, требуется подключить Jackson XML или JAXB через другой HttpMessageConverter
  • Тип содержимого указывается как "application/xml" — через headers или @Produces
  • Настройка выполняется добавлением зависимостей и конфигурацией конвертеров в Spring
  • Возврат XML возможен, если конфигурация и модели поддерживают сериализацию в XML
  • Практический пример: интеграция с системами, которым необходим XML (SOAP, legacy сервисы)

Подробный ответ

Основной ответ

Да, @RestController в Spring Boot способен возвращать данные в формате XML, а не только JSON. По умолчанию Spring Boot сериализует объекты в JSON с помощью Jackson. Однако после добавления подходящего message converter для XML — например Jackson XML или JAXB — и настройки content negotiation контроллер сможет формировать ответы в XML.

Ключевые моменты

  • Content negotiation (согласование формата) позволяет Spring определить формат ответа по заголовку Accept HTTP-запроса либо по параметрам URL. Если клиент передаёт Accept: application/xml, а приложение настроено с XML-конвертером, Spring сформирует XML-ответ.
  • Для работы с XML необходимо добавить зависимость, например com.fasterxml.jackson.dataformat:jackson-dataformat-xml, либо подключить JAXB, а затем зарегистрировать соответствующий HttpMessageConverter.
  • В @RestController возвращаемый объект сериализуется автоматически. Выбранный формат определяется настройками приложения и доступными конвертерами. JSON и XML в данном случае являются разными представлениями одного объекта.

Практический контекст

В приложениях на Spring Boot 2.5+ JSON обычно используется по умолчанию. Но при интеграции с внешними системами, которым нужен XML, например с SOAP-подобными сервисами или устаревшими API, подключают Jackson XML. Как правило, достаточно добавить зависимость и при необходимости переопределить WebMvcConfigurer, чтобы зарегистрировать MappingJackson2XmlHttpMessageConverter. После этого клиенты смогут запрашивать XML, а контроллеры с @RestController будут автоматически возвращать его, обеспечивая гибкость API.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку