https://stackoverflow.com/questions/67810796/integrating-customised-apis-in-spartacus-storefront
客户对 addEntry 这个 SAP Hybris API 做了增强,payload 里增加了一个新的 boolean 类型的字段,名为 fooBar.
our Hybris instance has some custom REST APIs, for example the addEntry. This version of the API requires an extra boolean parameter in the payload, let’s call it fooBar. Here’s an example of payload:
Payload 的例子:
{"quantity": 1, "product": {"code": "1234567"}, "fooBar": false}
为了让这个定制化后的 API 在 Spartacus 里消费,需要完成下列步骤:
标准的 active-cart.service.ts 里,addEntry 方法只有两个参数:
Modified the addToCart method passing the fooBar parameter to the addEntry method of the E2ActiveCartService
Extended ActiveCartService in E2ActiveCartService
Modified the addEntry method passing the fooBar parameter to the addEntry method of the E2MultiCartService
Extended MultiCartService in E2MultiCartService Modified the addEntry method passing the fooBar parameter to the payload of the E2CartAddEntry action
需要拷贝 CartAddEntry 成一个新的 action:
3.Implemented a new CartEntryEffects (called E2CartEntryEffects) that listens to the E2CartAddEntry action
Created a second effect called processesIncrement$ that dispatches the CartActions.CartProcessesIncrement action (we did this because the E2CartAddEntry cannot extends the EntityProcessesIncrementAction class)
Copied the addEntry$ effect from the original CartEntryEffects adding the fooBar parameter to the add method of the E2CartEntryConnector
Modified the add method passing the fooBar parameter to the add method of the E2CartEntryAdapter
Modified the abstract add method adding the fooBar parameter
Modified the add method adding fooBar to the payload of the POST call made from HttpClient
[
{ provide: ActiveCartService, useClass: E2ActiveCartService },
{ provide: MultiCartService, useClass: E2MultiCartService },
E2CartEntryEffects,
{ provide: CartEntryConnector, useClass: E2CartEntryConnector },
{ provide: E2CartEntryAdapter, useClass: E2OccCartEntryAdapter },
]