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

Aru*_*mar 6 rest json spring-mvc xml-parsing

我正在使用Spring 3.0创建一个RESTful网站.我正在使用ContentNegotiatingViewResolverHTTP消息转换器(如MappingJacksonHttpMessageConverterJSON,MarshallingHttpMessageConverterXML等).我能够成功获取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);
}
Run Code Online (Sandbox Code Playgroud)

sto*_*fer 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;
   }
Run Code Online (Sandbox Code Playgroud)

  • Spring中的转换器为某些内容类型(对于请求主体)注册并接受(对于响应).对于json来说,它是`application/json`和其他一些.对于XML,它是`application/xml`和其他一些.确保你的客户端发送`content-type:application/json`和`accept:application/json`,它会工作. (4认同)