如何使用 Broadleaf REST API?

How can I use the Broadleaf REST API?

我正在尝试使用 Broadleaf 电子商务中内置的 REST API。他们网站上的说明说要在 web.xml 中添加对 /WEB-INF/applicationContext-rest-api.xml 的引用,但 /WEB-INF/applicationContext-rest-api.xml 不存在。新文件名 renamed on January 14, 2015 by @phillipuniverse. The current web.xml from the DemoSite has a reference (applicationContext-rest-api-security.xml)。因此,似乎无需执行任何操作即可启用 REST——它们默认处于启用状态。

但是,当我尝试访问它们时,我得到:

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'null' not supported

我真的发了一个Content-Typeheader。这似乎是一个基于 known bug in Jackson 的错误异常。它与不可序列化的类型有关。

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

另外,我对 Maven 有点陌生,所以我不确定如何着手解决这个问题。 DemoSite 从存储库中提取 BroadLeafCommerce。我如何告诉它查看我本地的 git BroadleafCommerce 克隆? (我意识到这是一个不同的问题,但它是相关的,因为这是我能想到的解决问题的唯一方法。)

2 种解决问题的方法:

  1. Content-Type HTTP header 设置为 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