首页 > 解决方案 > 在 Spartacus Storefront 中集成自定义 API

问题描述

我们的 Hybris 实例有一些自定义 REST API,例如addEntry。这个版本的 API 在负载中需要一个额外的布尔参数,我们称之为fooBar。这是有效载荷的示例:

{"quantity": 1, "product": {"code": "1234567"}, "fooBar": false}

以下是我们为在实际进行 http 调用的服务中拥有这个额外参数所做的工作的列表:

[
    { provide: ActiveCartService, useClass: E2ActiveCartService },
    { provide: MultiCartService, useClass: E2MultiCartService },
    E2CartEntryEffects,
    { provide: CartEntryConnector, useClass: E2CartEntryConnector },
    { provide: E2CartEntryAdapter, useClass: E2OccCartEntryAdapter },
]

这个解决方案似乎有效,但我们认为对于一个相对简单的更改来说这相当复杂,我们想知道我们的方法是否正确,或者是否有更好、更清洁的方法。

亲切的问候

标签: spartacus-storefront

解决方案


目前,这似乎是这个特定用例的正确方法。

您没有确切指定fooBar用于什么,但我认为它已被使用并且可以在顶层层(在 UI 组件中)内切换,并且必须由所有其他层向下传递给适配器。

另一方面,例如,fooBar如果只是Product模型的一个属性,那么只需扩展“产品”模型+重要的更改(组件,适配器),所有其他地方都可以保持不变(只会通过扩展模型)。

您能否提供更多有关所需更改的背景信息,以便我们更好地理解它,并使其在未来变得更容易?

在不久的将来,我们正在考虑通过 Spartacus 中的所有层来统一外观服务的负载,因此向任何核心逻辑添加更多上下文将大大简化(基本上将归结为第二个示例,关于扩展Product模型)。


推荐阅读