/ pets产生json响应。我想在控制器上维护@RequestMapping(" pets")时使用/pets.xml来产生xml响应。我可以用
@RequestMapping("/index")
@RequestMapping("/index.xml")
作为一种解决方法,但这不是我正在寻找的。 p>
@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()
}
}
答案 0 :(得分:1)
默认情况下,Spring MVC RequestMappingHandlerMapping
将为您的@RequestMapping
带注释的方法(或类)添加多个映射。它将在配置的一个旁边添加一个以.*
结尾,以便它也匹配扩展名。
因此,在您的情况下,默认情况下创建的/pets.xml
映射已支持/pets.*
。您的produces
现在仅根据Accept
请求标头限制接受请求。
默认情况下,文件扩展名优先于Content-Type
标头。
答案 1 :(得分:0)
只有一个功能就足够了。你只需要向它添加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
进行交互