XML / JSON POST с RequestBody в Spring REST Controller - PullRequest
6 голосов
/ 01 декабря 2011

Я создаю RESTful веб-сайт с Spring 3.0. Я использую ContentNegotiatingViewResolver, а также конвертеры сообщений HTTP (например, MappingJacksonHttpMessageConverter для JSON, MarshallingHttpMessageConverter для XML и т. Д.). Я могу успешно получить содержимое XML, если я использую суффикс .xml в последнем URL-адресе и то же самое в случае JSON с суффиксом .json в URL.

Получение содержимого XML / JSON из контроллера не создает для меня никаких проблем. Но, как я могу POST XML / JSON с телом запроса в том же методе Controller?

Например,

@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 голосов
/ 02 декабря 2011

Вы должны рассмотреть возможность не использовать 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;
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...