Я создаю RESTful API, который возвращает JSON или XML в зависимости от заголовка Accept (application / json vs text / xml).У меня это работает нормально для JSON, но не могу заставить его работать, когда для XML.Я тестирую с помощью плагина-клиента Poster для Firefox.
У меня сложилось впечатление, что мне просто нужно добавить библиотеки Jackson и JAXB в путь к классам приложения.Опять же, это работает для JSON, но не для XML.
Первоначально я получал ошибку 406 при отправке заголовка Accept "text / xml".Затем я добавил @XmlRootElement(name="contact")
к своей сущности, и теперь я получаю ошибку 500.Нужно ли мне ставить @XmlRootElement
на каждую сущность?
Несмотря на то, что ответом является ошибка 500, я не вижу сообщений об ошибках в консоли.Я тестирую в Eclipse под управлением Tomcat 7. Разве я не вижу какую-то ошибку в консоли, когда получаю ошибку 500?
Мой "mvc-dispatcher-servlet.xml" имеет <mvc:annotation-driven />
Вот соответствующий код из моего контроллера:
@Controller
@RequestMapping("/contacts")
public class ContactsController {
@Autowired
ContactsService contactsService;
@RequestMapping(value="/{id}",
method=RequestMethod.GET,
headers = {"Accept=application/json, text/xml"})
public @ResponseBody Contact getContact(@PathVariable("id") int id) {
Contact queryContact = new Contact(id);
Contact result = contactsService.getContact(queryContact);
return result;
}
}
"mvc-dispatcher-servlet.xml" действительно прост.Нужно ли мне что-нибудь кроме:
<context:component-scan base-package="contactsapp.web.controller" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/"/>
Я использую Spring 3.1 и следующее:
<dependency org="com.sun.xml.bind" name="jaxb-impl" rev="2.2.5-b10" conf="runtime->default"/>
<dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="1.7.1" conf="runtime->default"/>