Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringRestController如何同时接受JSON和XML?_Xml_Spring Mvc_Spring Boot_Jackson_Deserialization - Fatal编程技术网

SpringRestController如何同时接受JSON和XML?

SpringRestController如何同时接受JSON和XML?,xml,spring-mvc,spring-boot,jackson,deserialization,Xml,Spring Mvc,Spring Boot,Jackson,Deserialization,我有一个非常好用的Spring控制器: @RestController @RequestMapping(value = "/widgets") class WidgetController { @RequestMapping(method = RequestMethod.POST) WidgetResponse createWidget(@Valid @RequestBody Widget widget) { // ... } } 在这里,我可以发布一条

我有一个非常好用的Spring控制器:

@RestController
@RequestMapping(value = "/widgets")
class WidgetController {
    @RequestMapping(method = RequestMethod.POST)
    WidgetResponse createWidget(@Valid @RequestBody Widget widget) {
        // ...
    }
}
在这里,我可以发布一条JSON消息,并创建我的小部件实例:

{
  "name" : "Widget1",
  "type" : "spinning",
  "isFizz" : true
}
我希望此端点也接受并反序列化XML小部件,如下所示:

<widget name="Widget1">
  <type>spinning</type>
  <isFizz>false</isFizz>
</widget>

旋转
假的
我想弄明白:

  • 如何允许端点同时接受JSON和XML数据,并正确地反序列化它们;及
  • 如何根据模式验证任何XML,例如
    widgets.xsd

有什么想法吗?

使用参数
消耗注释
@RequestMapping

@RequestMapping(value = "/widgets",consumes={MediaType.APPLICATION_JSON_VALUE,MediaType.APPLICATION_XML_VALUE})
WidgetResponse createWidget(@Valid @RequestBody Widget widget){
///
{

参数consumes接受一个MediaType数组,该数组带有注释
@RequestMapping
的参数
consumes

@RequestMapping(value = "/widgets",consumes={MediaType.APPLICATION_JSON_VALUE,MediaType.APPLICATION_XML_VALUE})
WidgetResponse createWidget(@Valid @RequestBody Widget widget){
///
{
参数consumes采用MediaType数组