使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应

举报
Jerry Wang 发表于 2022/09/02 12:01:05 2022/09/02
【摘要】 最后的效果:请求的方法类型和 url 都被记录了下来,同响应一起。设置断点来观察自定义 HTTP interceptor 运行时原理:我们自定义的 intercept 也是通过依赖注入的方式被注入到 httpInterceptor 的调度器里。首先把 method 和 urlWithParams 从 request 里提取出来:返回的 Observable pipe 方法里的 switchM...

最后的效果:

请求的方法类型和 url 都被记录了下来,同响应一起。

设置断点来观察自定义 HTTP interceptor 运行时原理:

我们自定义的 intercept 也是通过依赖注入的方式被注入到 httpInterceptor 的调度器里。

首先把 method 和 urlWithParams 从 request 里提取出来:

返回的 Observable pipe 方法里的 switchMap 里的处理函数,什么时候会被触发?

在响应式编程的世界里,不要太在意 switchMap 里指定的函数体是何时被调用的——充斥的全是 rxjs 的回调。

只需要注意 switchMap 里必须返回一个 Observable wrapper 对象。

再看这个 custom interceptor 什么时候被实例化的?

首先把系统所有的 HTTP_INTERCEPTORS 注入的实现都取出来,放到数组里,然后使用数组的 reduceRight 方法,逐一调用之。

我们自定义的 Custom HTTP Interceptor 赫然在数组里,所以可以被调用到:

UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];masterTemplate(uid,$contentCV);label
;;quickOrderPage;AccountPageTemplate;/my-account/quick-order

在 ContentPage 里插入了一张表 quickOrderPage,基于的 template 为:AccountPageTemplate

根据 ID 搜索,搜索出来很多结果,这些 template 是关联到 Catalog version 的:

template 可以挂载 content slot:

为什么搜索出来的 quickOrderPage,没有在 Spartacus 的 catalog 下面呢?

Jerry 还没试过前台 Spartacus 连我后台的 H2011 Commerce Cloud,Quick Order 能否工作?

果然,在我们的开发服务器 Backoffice 上,就能看到 Quick order 页面,已经插入到 Spartacus 对应的 catalog 去了:

再看 ContentSlot:BodyContentSlot-quickOrder

这个 content slot 也是如此:在我们的开发服务器上能查到:

但是在我本地安装的服务器上查不到:

Content slot 里插入的 Component:

QuickOrderComponent 也必须分配到 Spartacus 对应的 catalog 下:

这个 Component 同样应该分配一个 content slot:

在我本地的服务器上,还没有创建这个 Component:

说明我的服务器安装时,还没有执行 Spartacus sampledata extension?

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。