SpringMVC RequestMapping: Añadiendo .xml a la ruta del controller para la respuesta xml

/ pets produce una respuesta json. Me gustaría utilizar /pets.xml para generar una respuesta xml, manteniendo @RequestMapping ("mascotas") en el controller. Puedo usar

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

como una solución, pero eso no es lo que estoy buscando.

 @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() } } 

De forma pnetworkingeterminada, Spring MVC RequestMappingHandlerMapping agregará múltiples asignaciones para sus methods anotado @RequestMapping (o classs). Junto a la configurada, agregue una que termine con .* que coincida con las extensiones también.

Entonces, en su caso, /pets.xml ya es compatible con la asignación /pets.* que se crea de manera pnetworkingeterminada. Su produces ahora solo limita las requestes de aceptación según el encabezado de request de Accept .

Por defecto, la extensión del file tiene prioridad sobre el encabezado Content-Type .

Tener solo una function es suficiente. Solo necesita agregar arrayOf ("application / json", "application / xml) a él y produce ambos (en realidad sirve para ambos incluso si lo elimina, pero es explícito de esta manera.

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

Este código permite interogaciones en /pets.json y /pets.xml

  • Validar files XML grandes contra grandes XSD, ¿hay alguna manera rápida de hacerlo?
  • Android no ha podido crear instancias de una o más classs
  • ¿Puedo tener dos layouts xml usando el mismo visor usando extensiones sintéticas Kotlin?
  • Forma dibujable en xml mismo código programáticamente
  • time de espera de connection: conectar consultar logging de IDE
  • No se puede deshacer una colección de objects xml usando JAXB y Kotlin
  • Cargue la configuration xml del muelle de forma dinámica
  • Agregar vista personalizada a includedView
  • ¿Qué ventajas ofrece kotlin para la creación de templates XML?
  • ¿Cómo puedo usar la callback en Kotlin?
  • Kotlin: cadena de formatting