@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 или…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Как настроить @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 определить формат ответа по заголовку
AcceptHTTP-запроса либо по параметрам 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.