【问题标题】:Best design pattern to access external API访问外部 API 的最佳设计模式
【发布时间】:2015-09-12 05:58:12
【问题描述】:

我们公司有一个庞大的代码库,其中包含不同实体的类,如 Porduct、Customer、Order、OrderItem 等。我们需要访问 AliExpress API 才能上传我们的产品、编辑信息及其状态、跟踪订单等。

问题是我们的实体和速卖通实体并不总是相同的。例如,他们的产品都由几个 SKU 之一组成,而我们的产品没有任何 SKU,但它们可以是其他 SKU 的“父”产品。 我们实现了一个“访问”层来访问 API,并实现了一个“API 函数”层来进行一些预验证并形成请求。那个方法对吗? 不清楚的是我们还需要多少其他层?

我们的 Product 类有方法 update()、create()、createEmpty() 来处理 Product 和不同产品属性类型(不是单独)的 getter,所有这些都通过服务类处理 PostgreSQL。

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

Product->update(array('field'=>'value'))

但是,全球速卖通有几种方法可以更新产品的不同属性。更新价格不等同于更新股票,不等同于其他字段的分组更新。

你会推荐什么架构来处理这个问题?在处理对 API 的请求的层和像 Product 这样的“Item”类之间,我们需要多少层?

【问题讨论】:

    标签: php design-patterns


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 2013-12-01
        • 1970-01-01
        相关资源
        最近更新 更多