首页 文章

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

提问于
浏览
6

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

从控制器获取XML / JSON内容对我来说不会产生任何问题 . 但是, how can I POST the XML/JSON with request body in same Controller method?

对于例如

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

1 回答

  • 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;
       }
    

相关问题