访问外部的最佳设计模式 API

Best design pattern to access external API

我们公司有一个庞大的代码库,其中包含 class 用于不同实体(例如产品、客户、订单、订单项等)的代码。我们需要访问全球速卖通 API 才能上传我们的产品,编辑信息及其状态、跟踪订单等

问题是我们的实体和 AliExpress 实体并不总是相同的。例如,他们的产品都包含几个 SKU 之一,而我们的产品没有,但它们可以是其他产品的 "parent" 产品。 我们实现了一个 "Access" 层来访问 API 和一个 "API Function" 层来进行一些预验证和形成请求。这种方法对吗? 不清楚的是我们还需要多少层?

我们的产品 class 有方法 update()、create()、createEmpty() 来处理产品和不同产品 属性 类型(不是单独的)的吸气剂,所有这些处理PostgreSQL 通过服务 classes.

虽然使用不同的属性或多或少是标准化的,例如,我们需要更新产品,但我们会做类似

的事情
Product->update(array('field'=>'value'))

但是,AliExpress 有几种方法可以更新产品的不同属性。更新价格与更新库存不同,跟其他字段的组更新不同。

您建议使用哪种架构来处理此问题?在处理对 API 的请求的层和我们的 "Item" class 之类的产品之间,我们需要多少层?

您可以使用 gateway pattern。例如:http://microservices.io/patterns/apigateway.html

在访问外部 API 时,我倾向于使用 DAO 或存储库模式。它提供了一个很好的抽象,并允许更灵活的测试。

通过将域对象传递到 DAO 中,您可以封装调用的复杂性。这也意味着,如果该服务消失了,而您需要用其他东西(如数据库)替换它,您可能不必更改更高级别的代码。