SpringMVC RequestMapping: добавление xml к пути контроллера для ответа xml

/ домашние животные дают ответ json. Я хотел бы использовать /pets.xml, чтобы получить ответ xml, сохраняя при этом @RequestMapping («домашние животные») на контроллере. я могу использовать

@RequestMapping("/index") @RequestMapping("/index.xml") 

как обходной путь, но это не то, что я ищу.

 @RestController @RequestMapping("pets") class PetController { /*code*/ @RequestMapping(produces = arrayOf("application/json")) fun findPetsJson(): List<PetDto> { return petService.findAll() } // this results in /pets/.xml for the xml response. I'm aiming for /pets.xml @RequestMapping(".xml", produces = arrayOf("application/xml")) fun findPetsXml(): List<PetDto> { return petService.findAll() } } 

По умолчанию Spring MVC RequestMappingHandlerMapping добавит несколько сопоставлений для ваших аннотированных методов @RequestMapping (или классов). Он будет рядом с настроенным, добавьте один финал с .* Чтобы он соответствовал расширениям.

Поэтому в вашем случае /pets.xml уже поддерживается сопоставлением /pets.* которое создается по умолчанию. Теперь ваши produces ограничивают только принимаемые запросы на основе заголовка запроса принятия.

По умолчанию расширение файла имеет приоритет над заголовком Content-Type .

Достаточно одной функции. Вам просто нужно добавить arrayOf («application / json», «application / xml»), и он производит оба (он фактически делает это для обоих, даже если вы его удалите, но это явно так.

 @RestController @RequestMapping("pets") class PetController { /*code*/ @RequestMapping(produces = arrayOf("application/json", "application/xml), method = RequestMethod.GET) fun findPetsJson(): List<PetDto> { return petService.findAll() } } 

Этот код позволяет взаимодействовать как с /pets.json, так и с / pets.xml

Intereting Posts
Как создать таблицу SQLite с помощью Anko в Котине? Могу ли я иметь другой тип возврата в котлин? Полный динамический запрос базы данных IllegalAccessError при использовании Instant Run с Kotlin Каков правильный способ добавления абстрактного частного получателя и публичного сеттера? Имя файла, имя каталога или синтаксис метки тома неверны – Kotlin – Maven Каков самый ранний уровень API Android, с которым я могу использовать Kotlin? Почему я получаю несоответствие типа при попытке вернуть значение для проверенного общего параметра? Как заставить Джексона использовать параметры по умолчанию для Kotlin для отсутствующих значений? Не удалось написать JSON: не удалось десериализовать; вложенное исключение Kotlin и Proguard Объявление поля POJO, значение init или null Список clear и addAll в одном выражении Kotlin Возврат из функции в Kotlin как однострочный, когда объект равен нулю Невозможно разрешить моему приложению использовать обратную связь над другими правами на приложения