/домашние животные дают ответ json. Я хотел бы использовать /pets.xml, чтобы получить ответ xml, сохраняя при этом @RequestMapping («домашние животные») на контроллере. Я могу использоватьSpringMVC RequestMapping: добавление xml к пути контроллера для ответа xml
@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()
}
}
Я не поклонник решения этой проблемы с явными путями, но с согласованием содержимого. Более старая, но также текущая запись с весны io https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc – meistermeier
Удалите 'производит' из вашего сопоставления запросов (или добавьте' приложение/xml' до первого). Оба символа '/ pets' и'/pets.xml' будут отображаться, а согласование контента должно делать все остальное. По умолчанию отображение создается для '/ pets' и'/pets. * 'При обнаружении контроллера. –
@ M.Deinum, спасибо, это решило его гораздо более элегантным способом, чем я надеялся: я могу фактически удалить вторую форму запроса и функцию в целом - они могут быть написаны только одним. Теперь мне нужно только выяснить, как установить приоритет между ними (какой из них я получаю, когда я не использую расширение на пути, то есть «/ pets», но я уверен, что это легко выполнимо. Пожалуйста, добавьте свой комментарий в качестве ответа, видя что он решил мою проблему. – Irikos