源代码:

/*** Returns a fully qualified OCC Url (including baseUrl and baseSite)* @param endpoint Name of the OCC endpoint key config* @param urlParams  URL parameters* @param queryParams Query parameters* @param scope*/getUrl(endpoint: string,urlParams?: object,queryParams?: object,scope?: string): string {endpoint = this.getEndpointForScope(endpoint, scope);if (urlParams) {Object.keys(urlParams).forEach((key) => {urlParams[key] = encodeURIComponent(urlParams[key]);});endpoint = DynamicTemplate.resolve(endpoint, urlParams);}if (queryParams) {let httpParamsOptions = { encoder: new HttpParamsURIEncoder() };if (endpoint.includes('?')) {let queryParamsFromEndpoint;[endpoint, queryParamsFromEndpoint] = endpoint.split('?');httpParamsOptions = {...httpParamsOptions,...{ fromString: queryParamsFromEndpoint },};}let httpParams = new HttpParams(httpParamsOptions);Object.keys(queryParams).forEach((key) => {const value = queryParams[key];if (value !== undefined) {if (value === null) {httpParams = httpParams.delete(key);} else {httpParams = httpParams.set(key, value);}}});const params = httpParams.toString();if (params.length) {endpoint += '?' + params;}}return this.getEndpoint(endpoint);}

入口:

调用OccEndpointsService的getUrl方法,传入的是productCode:

首先读取endpoint:

OccEndpoint的配置:

专门为product list scope设置的url:

products/${productCode}?fields=code,name,summary,price(formattedValue),images(DEFAULT,galleryIndex)"

最后的请求:

一个具体的例子:
https://spartacus-dev0.eastus.cloudapp.azure.com:9002/occ/v2/electronics-spa/products/300938?fields=code,name,summary,price(formattedValue),images(DEFAULT,galleryIndex)&lang=en&curr=USD

从浏览器里得到的结果:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP Spartacus OccEndpointsService getUrl方法的实现原理相关推荐

  1. SAP Spartacus CurrentProductService.getProduct方法的实现原理

    注入CurrentProductService: 看看这个currentProductService又包含哪些属性: scope为undefined: 如果从routeState里能提取到produc ...

  2. 链式调用方法的实现原理和方法

    1.什么是链式调用? Person person = new Person().setName(fog).setAge(18).setSex(man).setJob(software engineer ...

  3. jQuery 中 data 方法的实现原理

    jQuery 中 data 方法的实现原理 前言:jQuery 作为前端使用最多最广泛的 JS 库,其源码每个 JSer 都应该研究一下.早就打算看却一直被各种事拖着,上次某公司面试时被问到 jQue ...

  4. scala 函数方法、函数方法的实现原理

    文章目录 1. 函数&方法 2. 函数&方法的实现原理 1. 函数&方法   scala中方法是类的一部分,而函数是一个对象,可以赋值给一个变量.scala 中的方法跟 Jav ...

  5. sort排序方法的实现原理

    sort 排序方法的实现原理   我们比较常用的是直接调用 JS的 sort方法,围绕原生 JS方法,并结合 V8排序的代码一起来分析,以便碰到类似的 JS排序问题时能够轻松应对.   在开始前请思考 ...

  6. SAP Spartacus Spinner控件显示原理

    SAP Spartacus是SAP Commerce Cloud的店铺前台页面,基于Angular开发.其中Spinner是一个Share控件,当Spartacus UI向后台发起数据请求时,界面会显 ...

  7. SAP Spartacus OccEndpointsService调用getBaseEndpoint的一些场景

    加上两处打印信息: BaseEndpoint由三处信息组成: 一些常见的使用场景: user-details.effect.ts里获取id为current的用户明细 user-token.interc ...

  8. SAP Spartacus OccEndpointsService单元测试的依赖注入

    OccEndpointsService的两个依赖: OccConfig和可选的BaseSiteService: OccConfig是SiteContextConfig的子类: export abstr ...

  9. matlab中二维插值中cubic方法的实现原理(个人见解)

    通过查找matlab的帮助程序,对离散数据格网化采用的方法有如下5种: griddata(..., METHOD) where METHOD is one of         'nearest'   ...

最新文章

  1. Java live template[在此处输入文章标题]
  2. iOS9定位获取经纬度 swift
  3. C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)...
  4. catia中sew的用法_CATIA超级副本(PowerCopy)使用方法总结 | 坐倚北风
  5. java怎么学好 用好接口_Java公开课|Java的实现接口怎么用,这才是学习好Java必备的实用函数,你会吗...
  6. etlgr是什么服务器_ETL是指什么 - 金融行业 - ITPUB论坛-中国专业的IT技术社区
  7. android es管理工具,Android
  8. 我珍藏的内容分享给大家
  9. 测视力距离5米还是3米_7岁男孩近视猛涨300度!眼科专家提醒:保护孩子视力这一点很关键...
  10. Docker 镜像优化与最佳实践
  11. HUE与Mysql的集成
  12. JAVA语言程序设计(基础篇)第四章——课后习题解
  13. 桌面音乐频谱linux,音乐频谱桌面特效下载-X Music Spectrum(音乐频谱桌面特效)免费版 v1.0.0.8_系统之家...
  14. 人工神经网络神经元模型,人工神经元算法机制图
  15. MAC电脑迁移本机Notes
  16. JDBC 第一章 JDBC概述
  17. 视频剪辑怎么自学?其实剪辑很简单
  18. 2022华为软挑比赛(初赛笔记)
  19. 新手使用xc3s50an-dk@liuger 开发板
  20. 最全MyBatis核心配置文件总结:java运行环境没有安装或配置错误

热门文章

  1. 二维数组最大关联子数组
  2. 仿简书、淘宝等等App的View弹出效果
  3. 1856: [Scoi2010]字符串
  4. 一个亿万富翁和一个陌生人的换钱计划
  5. HTML5 CSS3 Transform 笔记 (scale不起作用)
  6. 移动端效果之Picker
  7. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5
  8. JQuery UI之Autocomplete(2)后端获取数据
  9. Matlab生成动态链接库供C#调用
  10. [ js ] 可否用多线程的思路,解决大数量数据的性能问题?