2016-03-18 7 views
1

Я пытаюсь использовать API REST, встроенный в электронную коммерцию Broadleaf. Инструкции на своем сайте говорят добавить ссылку на /WEB-INF/applicationContext-rest-api.xml в web.xml, но /WEB-INF/applicationContext-rest-api.xml не существует. Это было renamed on January 14, 2015 от @phillipuniverse. Текущий web.xml от DemoSite has a reference до нового имени файла (applicationContext-rest-api-security.xml). Таким образом, кажется, что ничего не нужно делать, чтобы включить REST - они включены по умолчанию.Как использовать API-интерфейс Broadleaf REST?

Однако, когда я пытаюсь получить доступ к ним, я получаю:

org.springframework.web.HttpMediaTypeNotSupportedException: Тип содержимого 'нулевой' не поддерживается

Я действительно Посылаю контент- Заголовок заголовка. Это, по-видимому, неправильное исключение, основанное на known bug in Jackson. Это связано с тем, что типы не являются сериализуемыми.

Я думаю, что это означает, что классы-оболочки должны быть исправлены. Это то, что сериализуется. (правильно?) Я пытаюсь понять, если это потому, что я делаю что-то не так, или если это ошибка в BroadleafCommerce.

Кроме того, я новичок в Maven, поэтому не знаю, как это исправить. DemoSite вытаскивает BroadLeafCommerce из репо. Как мне сказать, чтобы посмотреть на мой локальный клон GIT от BroadleafCommerce? (Я понимаю, что это другой вопрос, но это связано, потому что это единственный способ, которым я могу думать о решении проблемы.)

ответ

1

2 способа исправить вашу проблему:

  1. Установить заголовок Content-Type HTTP либо application/json (по умолчанию) или application/xml
  2. Удалить все consumes из всех конечных точек для тех, которые имеют @RequestBody

за исключением случая, если га ве конечной точки с аннотацией:

@RequestMapping(value = "/cart", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}, consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) public class CartEndpoint extends org.broadleafcommerce.core.web.api.endpoint.order.CartEndpoint

Вы можете заменить, что с: @RequestMapping(value = "/cart", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) public class CartEndpoint extends org.broadleafcommerce.core.web.api.endpoint.order.CartEndpoint

+0

Я устанавливаю заголовок Content-Type. Сообщение об ошибке вводит в заблуждение. См. Ссылку, которую я включил выше, об ошибке в Джексоне. –

+0

Вы пытались удалить все атрибуты потребления на @RequestMapping? Я уверен, что это не связано с ошибкой разбора Джексона. На какой конечной точке вы пытаетесь попасть конкретно? Это то, что вы действительно ожидаете от десериализации? – phillipuniverse

+0

Я удалил 'consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE }', и он сработал. –

Смежные вопросы