为电子商务网站使用magento API

为电子商务网站使用magento API,magento,e-commerce,Magento,E Commerce,我是magento的初学者,正在使用magento创建一个网站。我注意到magento有很多API,它们公开了创建电子商务网站所需的所有功能。因此,我想使用magento的API来获取数据,但是单独开发UI,而不依赖magento。我已经找到了很多通过magento主题化开发网站的参考资料,但没有那些UI是在单独的MVC中开发的,并且纯粹使用magento作为服务层的参考资料。我的方法中是否存在任何问题 编辑:我已经对API中的db性能问题以及外部缓存如何缓解该问题有了很大的了解,但我仍然不理解

我是magento的初学者,正在使用magento创建一个网站。我注意到magento有很多API,它们公开了创建电子商务网站所需的所有功能。因此,我想使用magento的API来获取数据,但是单独开发UI,而不依赖magento。我已经找到了很多通过magento主题化开发网站的参考资料,但没有那些UI是在单独的MVC中开发的,并且纯粹使用magento作为服务层的参考资料。我的方法中是否存在任何问题


编辑:我已经对API中的db性能问题以及外部缓存如何缓解该问题有了很大的了解,但我仍然不理解magento作为服务层(即通过使用magento的API为网站加油)令人印象深刻的用法,他们还有其他问题吗?

从技术上讲,只有通过API才能运行站点

您可能面临的问题是一个实际问题,您可以学习如何在Magento中实现当前的UI,而不是花时间学习所有API调用

这种方法的优点是,您还可以更好地了解Magento的内部工作方式,从而使您能够利用其功能满足您独特的业务需求


另一个问题是,当使用API时,您对处理/计算事物的方式的控制要比使用Magento本身时对细节的控制要少一些。

Magento API速度慢,您在尝试运行站点时会遇到严重的性能问题

由于EAV模型的复杂性,您可能会发现很难单独通过API管理产品

对于使用Magento自己的前端,您有什么特别的顾虑吗?一开始这让人望而生畏,但一旦您了解了布局系统,它实际上就非常强大且可定制。

我经常在通过SOAP和XMLRPC访问Magento的API时看到“会话过期”问题。我的所有调用都需要异常处理以避免停止执行。我想,当在API之上构建所有东西时,单凭这一点就可能造成噩梦

您将得到的最佳答案是在开始编码之前访问API。广泛记录测试并查找错误。如果你在正常的基础上看到错误,这应该能回答你的问题。即使您找到了说明可以执行您正在尝试的操作的文档,您仍然需要调整API以在运行存储所需的负载下正常工作


在投入开发数小时之前,了解您面临的困难将是一件好事。

以下是我们如何克服Magento API的缓慢性:

  • 在J2EE中创建了一个Web服务提供商SpringMVC,它充当Magento和最终用户之间的代理
  • J2EEWeb服务提供程序公开了Magento拥有的几乎所有API,但也支持JSON和REST以及SOAP和RPC
  • J2EEWeb服务提供商使用基于文档的数据库(MongoDB)在MongoDB中存储产品目录的快照
  • J2EE Web服务提供程序使用本机MongoDB缓存快速提供数据,而无需运行任何昂贵的SQL查询
  • 为了避免脏缓存问题,我们在Magento Admin中创建了一个钩子,以便在Magento中的数据发生更改时将数据推送到MongoDB中

  • 对某些人来说,这可能听起来有些过分,但我们已经能够在不慢的情况下实现相当高的吞吐量。

    主要问题是您无法找到该主题的任何参考:)我尝试了很多,但似乎这不是首选方法,因此缺少相关文章。谢谢,是什么让magento API比使用magento的前端慢?我所关心的是我从一些人那里得到的反馈,这些人致力于magento wrt精确控制UI元素的能力。作为一个完全的局外人,我喜欢开发完全控制的UI,并使用一套API来增强目录、搜索、购物车、促销、结帐等功能。这似乎是一种更自然的开发方式。这需要一点技巧,但总的来说,可以为magneto设计任何您想要的UI。@142857:MagentoAPI速度非常慢,因为它们没有利用前端UI使用的各种缓存。Magento数据库的对象模型相当复杂(与Ofbiz相同),获取单个产品页面的信息会转换为多个多连接查询,如果没有任何缓存,这些查询在恒定负载下会变得很慢。@anubhava,谢谢你的回答。因此,如果我使用一个缓存层(如memcached)来缓存API esp产品获取的结果,那么应该可以吗?是的,如果使用缓存层,那么它的性能会更好。但是,当产品详细信息通过仪表板更改时,您需要构建一种机制来避免脏缓存并清除缓存内容。如果你愿意,我可以发布关于我的实现的详细信息。你能再解释一下吗。我尝试过使用API,但没有遇到任何这样的问题。有时,当同时对API进行两次调用时,即使调用来自不同的API Web用户,magento也会对其中一次调用返回“会话过期”。会话过期对于过期的脚本来说就像一个致命错误,如果没有适当的处理,它将停止执行。它可能只是我的配置,但我的硬件和php配置足以处理负载。如果您在尝试每分钟调用API数百到数千次时遇到此问题,请不要感到惊讶,因为这是运行整个应用商店所必需的。谢谢,很高兴听到您使用mongodb。您是否遇到过JMC提到的任何“会话过期”问题。不,我们没有遇到来自Magento的任何“会话过期”错误,即使是在多个Jmeter节点的模拟重负载下。很抱歉