Spring REST Controller中带有RequestBody的XML / JSON POST
问题内容:
我正在用Spring
3.0创建一个RESTful网站。我正在使用ContentNegotiatingViewResolver
以及HTTP消息转换器(例如MappingJacksonHttpMessageConverter
JSON,MarshallingHttpMessageConverter
XML等)。如果我在url的末尾使用.xml后缀,并且在JSON与URL带有.json后缀的情况下相同,则能够成功获取XML内容。
从控制器获取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);
}
问题答案:
您应该考虑不使用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;
}