在 Spartacus 官方支持 ASM 场景之前,在代表经过身份验证的用户发送的请求中,OCC userId 是特殊的 current OCC 用户,由 OCC_USER_ID_CURRENT 常量表示...需要应用一些逻辑来确定正确的 OCC userId 以传递给触发后端调用的操作。...因此,确定正确 OCC userId 的逻辑集中在 UserIdService 的 takeUserId() 函数中。 当客户支持代理登录时,ASM UI 中会出现一个会话超时计时器。...为了显示 CMS 内容,Spartacus 依赖于 OCC 的 CMS endpoint. 发送请求时,CMS 端点不接受可以定义模拟用户(即客户)的 userId 参数。...OCC CMS 端点不接受 userId 参数,因此模拟客户不可能在 ASM 模拟会话期间触发 CMS 规则和限制(rules and restrictions).
默认情况下,Spartacus 使用 OCC(SAP Commerce Cloud 的标准 REST API)。...可以配置 OCC 适配器中使用的端点,因此 Spartacus 的定制可以非常轻量级。 仅当您使用另一个系统时,才可能需要提供自定义适配器。...因此,您可以在 Spartacus 中配置 OCC 模块的端点。...以下代码片段显示了产品详细信息端点的自定义配置: backend: { occ: { baseUrl: environment.occBaseUrl, endpoints: {...fields=DEFAULT,customAttribute', } } } OCC 配置用于 OccEndpointsService。 如果需要,该服务会查找配置并将参数应用于端点。
需求 客户有多个 JS 店面,并希望将每个店面连接到不同的 API 端点,但默认情况下,所有 JS 店面都绑定到同一个 API。...当前的实现 除非显式配置 OCC 基本 URL,否则云门户(Cloud Portal)中的 第一个 API 端点将是与每个 JS Storefront 关联的端点。...实际项目中一个常见的问题是,Spartacus 意外通过公共网络而不是内部向 API 服务发送请求。 下列是正常的请求: https://api....有两种配置为 Spartacus 配置 CORS 的方式。...方式1:Local Properties Configuration 通过 hac、服务配置或 manifest.json 引用的属性文件更改属性。
在生产环境中,这应该包含允许与后端 API 交互的不同域。 allowedMethods 允许的标头必须包括所有允许使用的 HTTP 方法。...如果这些标头不允许跨域,Spartacus 将不会收到特定请求的响应。大多数标头是标准标头,但您可能需要一些特定于功能的标头。以下列表提供了可以使用的所有标头的概述。...在 Spartacus 库的 1.x 版中,Spartacus 没有发送 cookie,但从 2.0 版开始,将为每个 OCC 请求发送 cookie。...这也已修补到 Spartacus 库的 1.4 和 1.5 版。 需要发送 cookie 才能获得“会话亲和力”,也称为“粘性会话”。...会话亲和性意味着 API 端点后面的同一服务器用于同一会话的所有后续请求。尽管 Commerce API 是无状态的,但有时多个并行或顺序调用可能会失败。
Spartacus 从后端请求商品数据时,返回的payload往往非常大,可能在多个地方都需要用到,比如商品轮播、商品详情页等。 但是,并非所有这些地方都需要完整的有效负载。...Spartacus 当前支持加载产品数据的范围。...OccProductAdapter 时,您可以使用端点配置中的 fields 参数在 backend.occ.endpoints.product 键下配置范围有效负载。...您可以通过添加具有指定字段参数的新端点配置来定义自定义产品范围。...在以下示例中,定义并提供了一个新的价格范围: { backend: { occ: { endpoints: { product: { price
在 SAP Commerce Cloud 后端,可以使用 CorsFilter 以通用方式配置这些标头。...Spartacus 没有在 Spartacus 库的 1.x 版本中发送 cookie,但从 2.0 版本开始,将为每个 OCC 请求发送 cookie。...这也已修补到 Spartacus 库的 1.4 和 1.5 版本。...需要发送 cookie 以获得 session affinity,也称为 sticky sessions. sticky sessions 意味着 API 端点后面的同一台服务器用于同一会话的所有后续请求...sticky sessions 的另一个优点是,如果同一会话的请求由同一台服务器提供服务,则后端将获得性能改进。
在 Spartacus UI 发起的 OCC API 请求的 URL 中,您可能会注意到一个名为 cmsTicketId 的字段。...这个字段的含义与用途如下: cmsTicketId 是一个标识符,用于关联 Spartacus UI 与 SAP Commerce Cloud 后端 CMS (Content Management System...当用户在 CMS 中进行更改并预览更改结果时,系统会创建一个 CMS 会话票证(CMS Ticket)。这个票证包含了当前 CMS 会话的所有更改,但尚未发布到生产环境。...Spartacus UI 会将这个票证的 ID 作为 cmsTicketId 参数传递给 OCC API,以便在 API 请求中获取与该票证关联的 CMS 数据。...这样,用户就可以在 Spartacus UI 中实时预览他们在 CMS 中所做的更改。 cmsTicketId 参数只在开发或预览模式下使用,以确保用户能够预览未发布的 CMS 更改。
首先登录 cloud portal,创建一个新 build: 点击 create 按钮: 输入构建的名称和托管要构建的代码库的 git 分支。...约定如下: spartacus-[hybris_patch_version]-[cep_version]-[spartacus_version]....对于数据迁移模式,如果数据不打算作为部署的一部分进行更改,则不需要迁移。 如果数据会发生变化,请初始化数据库。...文件夹中 Backend URL for javascript storefront 如果您有多个环境并且您想重用相同的构建,请在 index.html 中添加一个属性,如下所示: Model T builder 将自动用每个环境的正确后端 URL 替换元属性的内容。
官网 从一开始,Spartacus 就包含了客户端身份验证和用户身份验证。 尽管这对于 Web 应用程序来说并不常见,但对于 Spartacus 来说是必须的,因为后者需要使用 OCC API。...例如,如果您想更新您的个人资料,您需要登录。当您登录时,服务器会确认您的凭据 - credentials, 并向应用程序返回访问令牌。...此更改很重要,因为 Spartacus 默认构建为支持 OCC,但 Spartacus 不限于使用 OCC。...但是,对于 OCC,还需要在登录或注销后设置紧密耦合的用户 ID,以及在使用辅助服务模块 (ASM) 时进行用户模拟所需的用户 ID。...Persisting Authentication Data in the Browser Storage 登录后,您的令牌已被存储并用于 API 调用,您刷新页面,突然您不再登录。
SAP Spartacus 支持 client 认证和 user 认证,为了配合 Commerce Cloud OCC API....OCC API 有不少 endpoints是针对未登录用户调用的,比如用户注册,密码重置,以guest方式下单等等。...用户登录后,Commerce Cloud 确认用户credentials之后,返回Access Token,接下来该登录用户调用的所有OCC API,都使用该Access Token来完成。...用户成功登录后,接下来发起的所有OCC API调用,都需要附上Access Token. 这个行为通过HTTP Interceptors完成。 ?...如果信任关系再进一步,或者调用者是一个后端的模块,没有用户界面的时候,可以使用 Client 方式。
Command 设计模式提供了一种强大且简化的方式来处理状态(换句话说,加载和缓存),并针对后端系统执行操作,比如 Spartacus Storefront B2B 场景下设置 Payment Method...,即切换下图所示的 Radio button,对应的后台实现就通过 Command 方式触发一个发送到 Commerce Cloud 后台的 HTTP PUT OCC 请求。...Command 表示一种可以更改系统状态的操作,通常是通过向后端发出 REST 调用来完成。想想上图 Spartacus 的例子,如何找到该 Command 对应的 OCC 请求准确的发起位置?...乍一看,我们在 Spartacus B2B Storefront 发起的 OCC API 请求里,看不到 connector 的参与了?
试图添加产品到 Spartacus 购物车时遇到如下错误消息: This item was already in your cart. The quantity was updated....目前,对于 B2B 店面,需要使用 OCC 端点的 B2B 变体(variations) - 请参阅 defaultB2bOccConfig。...也许在 Spartacus 应用程序中缺少 OCC endpoint 的 B2B 配置。...请尝试在应用模块(或 SpartacusConfigurationModule)中提供: import { defaultB2bOccConfig } from "@spartacus/setup";
提供登录超链接的 Component selector:cx-login cx-page-slot position = SiteLogin cx-login SiteLogin 居然在 page 请求
根据自定义基于加速器的店面的数量和方法,您发现尝试将现有体验迁移到 Spartacus 变得简单或困难。如果您不确定,您可以使用以下步骤进行练习,以确定更改的数量,而不必花时间实施。...要开始使用,您还需要以下内容: 初始设置 查看 Spartacus 的发行说明和路线图,以确保您了解哪些功能具有同等性,哪些可能已更改,哪些可能缺失 升级您现有的店面以至少使用 SAP Commerce...开发人员的核心技能将是: Angular RxJS Spartacus HMTL5 Back-End Team 后端团队将构建前端团队所需的 OCC API。...Spartacus 组件(参见上面的模块和组件)用于在客户端构建页面,它们执行对服务器的 OCC 调用(参见上面的 OCC API)以检索渲染所需的数据。...还需要更改内容目录,Spartacus 文档很好地概述了加速器和 Spartacus 示例数据之间的差异。
大多数前端应用程序需要通过 HTTP 协议与服务器通信,以下载或上传数据并访问其他后端服务,SAP 电商云 Spartacus UI 也不例外。...请求类型化响应对象(typed response objects)的能力 简化的错误处理 可测试性特征 请求和响应拦截 下图是 Spartacus OCC Adapter 实现中对 HTTPClient...declarations: [ AppComponent, ], bootstrap: [ AppComponent ] }) export class AppModule {} SAP Spartacus...get() 方法有两个参数; 要从中获取的端点 URL,以及用于配置请求的选项对象。 options 的参数定义: options: { headers?...: boolean, } 下图是 Spartacus 通过 HTTPClient 获取 Language 列表的代码: 因为服务方法返回一个配置数据的 Observable,所以组件订阅了该方法的返回值
但是,即使在 SSR 模式下,我发现 /cms/pages OCC API 仍然是从客户端触发的。...products: true, cms: true } } } }); 当我访问 SSR 服务器返回的主页时,我在 Chrome 开发工具中观察到以下 OCC...所以我的理解是: 客户端产品数据的API被认为是“不必要的状态调用后端”,被SSR传输状态避免,对吗?...解答 默认情况下,Spartacus 在每次路由更改时重新加载 CMS 页面数据,无论它是否已经处于 ngrx 状态。...但是,客户可以通过 Spartacus 配置 routing.loadStrategy: RouteLoadStrategy.ONCE 对其进行不同的配置。
先查看登录按钮的实现,选择器为 cx-register user-register.service.ts 里,使用了 command 模式,注意 uid 里的 +,并没有进行任何处理。...command 最终投递到 occ-user-profile.adapter.ts 文件中的 register 方法里,调用 Angular HTTP Library 的 post 方法进行投递。...Spartacus 事件服务提供了一个事件流,开发人员无需紧密集成到特定组件或模块即可使用这些事件流。事件系统在 Spartacus 中用于构建与第三方系统的集成,例如标签管理器和 Web 跟踪器。...下面是一个例子: import { CxEvent } from "@spartacus/core"; export class CartAddEntryEvent extends CxEvent {...下面是一个响应 添加到购物车事件 的示例,然后等待购物车稳定(因为 OCC 购物车需要从后端重新加载),然后将所有购物车数据附加到事件数据: constructor( events: EventService
问题和观察 关于由 Spartacus 驱动的页面或组件请求的一个疑问。...请求负载中的 componentIds 是由 CmsService.getComponentData 调用定义的,堆叠起来,然后通过一些优化立即发送到后端。...如果二次开发人员连续多次调用 CmsService.getComponentData(在同一个 JS 宏任务中),那么 Spartacus 会将这些调用分组,并且仅向 OCC 发出一个带有所有组件 ID...请注意,OCC 对组件的调用是上下文相关的,它在有效负载中传递 productCode. 这是因为对于不同的 PDP,相同的 cms 组件可能会从后端携带不同的有效负载。...如果客户期望更改这种行为情况,客户可以添加自定义项来优化它 - 这样就不会在不同的产品代码中重复调用这些组件 ID.
后端运行在多个 pods/节点时,当子序列请求过早进入时,后端将无法跨集群发送缓存失效请求。此外,如果多个请求分散在多个节点上,则会消耗延迟和不必要的资源。...对于单个客户端,Spartacus 应该尽可能多地与单个后端交互。这在传统上称为“粘性会话”。 CCv2为此做了部分准备。它将 ROUTE cookie 添加到响应中。...一旦前端这些增强到位,就会抛出错误,因为必须完成额外的后端配置。...SAP Spartacus 端具体增强方式: 首先在 occ-config.ts 里增加一个配置项:useWithCredentials 然后新建一个 interceptor,如果检测到配置里启用了...然后我们在后续的occ请求中获取ROUTE cookie。
Spartacus 开源项目提供将 Angular 实现的 电商 Storefront 站点作为 PWA 运行的功能。...客户端浏览器根据这个 hash 值来判断文件是否发生了更改。如果发生更改,则浏览器需要重新加载。 每次重新部署(new deployment) 会导致文件的 hash 发生变化。...在构建 Spartacus 并将其部署到 CCV2 Cloud 时,会发生以下步骤: 构建应用程序:为必要的文件(包括 index.html)生成哈希 将 index.html 中的占位符 OCC_BACKEND_BASE_URL_VALUE...代码里:忘记将代码里的 occ baseUrl 的配置注释了: backend: { occ: { baseUrl: 'https://localhost:9002', -...,CCv2 将其替换为客户要部署到的环境的 api,因此,无需在 Spartacus 中设置静态 occ baseUrl - 后者仅仅是在本地开发时才需要设置。
领取专属 10元无门槛券
手把手带您无忧上云