Spring REST控制器中带有RequestBody的XML / JSON POST

时间:2011-12-01 09:36:02

标签: json rest spring-mvc xml-parsing

我正在使用Spring 3.0创建一个RESTful网站。我正在使用ContentNegotiatingViewResolver以及HTTP消息转换器(如JSON为MappingJacksonHttpMessageConverter,XML为MarshallingHttpMessageConverter等)。我能够成功获取XML内容,如果我在url的最后一个使用.xml后缀,并且在URL中使用带有.json后缀的JSON时也是如此。

从控制器获取XML / JSON内容不会对我产生任何问题。但是,如何在同一个Controller方法中使用请求主体发布XML / JSON?

例如

@RequestMapping(method=RequestMethod.POST, value="/addEmployee")
   public ModelAndView addEmployee(@RequestBody Employee e) {
        employeeDao.add(e);
        return new ModelAndView(XML_VIEW_NAME, "object", e);
}

1 个答案:

答案 0 :(得分:11)

您应该考虑不使用View来返回JSON(或XML),而是使用@ResponseBody注释。如果员工应该返回什么,那么Spring和MappingJacksonHttpMessageConverter将自动将您的Employee对象转换为JSON,如果您使用这样的方法定义和实现(注意,未经测试):

   @RequestMapping(method=RequestMethod.POST, value="/addEmployee")
   @ResponseBody
   public Employee addEmployee(@RequestBody Employee e) {
     Employee created = employeeDao.add(e);
     return created;
   }