如何使用Broadleaf REST API?

时间:2016-03-18 20:19:14

标签: broadleaf-commerce

我正在尝试使用Broadleaf电子商务中内置的REST API。他们网站上的说明会在/WEB-INF/applicationContext-rest-api.xml中添加对web.xml的引用,但/WEB-INF/applicationContext-rest-api.xml不存在。 @phillipuniverse是renamed on January 14, 2015。从DemoSite has a reference到新文件名(web.xml)的当前applicationContext-rest-api-security.xml。因此,似乎无需执行任何操作来启用REST - 默认情况下它们已启用。

然而,当我尝试访问它们时,我得到:

  

org.springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型'null'

我真的在发送Content-Type标头。这似乎是基于known bug in Jackson的不正确的例外。它与不可序列化的类型有关。

我认为这意味着需要修复包装类。它们是序列化的。 (对吗?)我试图弄清楚这是因为我做错了什么,或者是否是BroadleafCommerce中的一个错误。

另外,我对Maven有点新意,所以我不确定如何解决这个问题。 DemoSite从回购中提取BroadLeafCommerce。我怎么告诉它看看我当地的BroadleafCommerce git克隆? (我意识到这是一个不同的问题,但它是相关的,因为这是我能想到解决问题的唯一方法。)

1 个答案:

答案 0 :(得分:1)

解决问题的两种方法:

  1. Content-Type HTTP标头设置为application/json(默认值)或application/xml
  2. 从所有端点中删除所有consumes,但具有@RequestBody
  3. 的端点除外

    例如,如果您的端点注释为:

    @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