阔叶 API 不工作
Broadleaf APIs not working
我正在尝试使用 Broadleaf APIs 在消费者应用程序上创建购物车、添加项目和结账。
克隆演示应用程序并根据 link 修改配置:
https://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/rest/rest-tutorials
问题:
1.新建购物车->
POST: http://localhost:8080/api/v1/cart
异常:HttpRequestMethodNotSupportedException:不支持请求方法 'POST'
使用 GET 请求:有效
- 添加产品编号:
POST: http://localhost:8080/api/v1/cart/1?categoryId=1&customerId=100
Exception:HttpRequestMethodNotSupportedException: 不支持请求方法'POST'
GET 请求有效但未添加产品。
3.Add 订单付款
POST: http://localhost:8080/api/v1/cart/checkout/payment?customerId=100
如上文所述在正文中添加了 OrderPaymentWrapper URL
例外:
messageKey": "queryParameterNotPresent",
"message": "com.broadleafcommerce.rest.api.exception.BroadleafWebServicesException.queryParameterNotPresent"
或者,根据 swagger 文档引用 https://demo.broadleafcommerce.org/api/v2/swagger-ui.html#/ 调用 API。
同样的问题,无法创建订单流。
我已经尝试通过 运行 在本地主机 https://github.com/BroadleafCommerce/DemoSite 上进行调试
同样的问题。
请指教
这看起来像是我们的 @FrameworkController
注释中的一个突出问题。我在 https://github.com/BroadleafCommerce/Issues/issues/3 的 Broadleaf 中打开了一个问题,其中包含有关当前失败原因的更多信息。
解决方法是修改 API 项目中的 CustomCartEndpoint
,您必须在 createNewCartForCustomer()
方法中添加。 CustomCartEndpoint
的最终实现应该是这样的:
@RestController
@RequestMapping(value = "/cart",
produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public class CustomCartEndpoint extends CartEndpoint {
@Override
@RequestMapping(value = "", method = RequestMethod.GET)
public OrderWrapper findCartForCustomer(HttpServletRequest request) {
try {
return super.findCartForCustomer(request);
} catch (Exception e) {
// if we failed to find the cart, create a new one
return createNewCartForCustomer(request);
}
}
@Override
@RequestMapping(value = "", method = RequestMethod.POST)
public OrderWrapper createNewCartForCustomer(HttpServletRequest request) {
return super.createNewCartForCustomer(request);
}
}
我正在尝试使用 Broadleaf APIs 在消费者应用程序上创建购物车、添加项目和结账。 克隆演示应用程序并根据 link 修改配置: https://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/rest/rest-tutorials
问题: 1.新建购物车-> POST: http://localhost:8080/api/v1/cart 异常:HttpRequestMethodNotSupportedException:不支持请求方法 'POST' 使用 GET 请求:有效
- 添加产品编号: POST: http://localhost:8080/api/v1/cart/1?categoryId=1&customerId=100 Exception:HttpRequestMethodNotSupportedException: 不支持请求方法'POST' GET 请求有效但未添加产品。
3.Add 订单付款 POST: http://localhost:8080/api/v1/cart/checkout/payment?customerId=100 如上文所述在正文中添加了 OrderPaymentWrapper URL 例外: messageKey": "queryParameterNotPresent", "message": "com.broadleafcommerce.rest.api.exception.BroadleafWebServicesException.queryParameterNotPresent"
或者,根据 swagger 文档引用 https://demo.broadleafcommerce.org/api/v2/swagger-ui.html#/ 调用 API。 同样的问题,无法创建订单流。
我已经尝试通过 运行 在本地主机 https://github.com/BroadleafCommerce/DemoSite 上进行调试 同样的问题。
请指教
这看起来像是我们的 @FrameworkController
注释中的一个突出问题。我在 https://github.com/BroadleafCommerce/Issues/issues/3 的 Broadleaf 中打开了一个问题,其中包含有关当前失败原因的更多信息。
解决方法是修改 API 项目中的 CustomCartEndpoint
,您必须在 createNewCartForCustomer()
方法中添加。 CustomCartEndpoint
的最终实现应该是这样的:
@RestController
@RequestMapping(value = "/cart",
produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public class CustomCartEndpoint extends CartEndpoint {
@Override
@RequestMapping(value = "", method = RequestMethod.GET)
public OrderWrapper findCartForCustomer(HttpServletRequest request) {
try {
return super.findCartForCustomer(request);
} catch (Exception e) {
// if we failed to find the cart, create a new one
return createNewCartForCustomer(request);
}
}
@Override
@RequestMapping(value = "", method = RequestMethod.POST)
public OrderWrapper createNewCartForCustomer(HttpServletRequest request) {
return super.createNewCartForCustomer(request);
}
}