SAP Spartacus OccEndpointsService getUrl方法的实现原理

简介: SAP Spartacus OccEndpointsService getUrl方法的实现原理

源代码:

/**

  * 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);

 }

入口:

image.png

image.png

image.png

一个具体的例子:

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


从浏览器里得到的结果:

image.png


相关文章
|
5月前
|
人工智能 搜索推荐 Serverless
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
|
5月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
|
5月前
|
搜索推荐
SAP UI5 SmartTable.prototype._onMetadataInitialised 方法的深入介绍
SAP UI5 SmartTable.prototype._onMetadataInitialised 方法的深入介绍
|
5月前
|
JSON 前端开发 开发者
sap.ui.model.Model.checkUpdate 方法介绍
sap.ui.model.Model.checkUpdate 方法介绍
|
5月前
|
存储 JSON 供应链
sap.ui.model.Model.refresh 方法介绍
sap.ui.model.Model.refresh 方法介绍
|
5月前
|
前端开发 JavaScript
什么是 Spartacus 的 ConfigModule.withConfig 方法
什么是 Spartacus 的 ConfigModule.withConfig 方法
|
12月前
|
存储 对象存储
Spartacus 添加 PWA 应用到 home 的实现原理分析
Spartacus 添加 PWA 应用到 home 的实现原理分析
|
5月前
|
存储 供应链 安全
SAP S4HANA 数据归档的实施方法
SAP S4HANA 数据归档的实施方法
|
5月前
|
存储 缓存 数据管理
Spartacus cart list item 删除的实现原理
Spartacus cart list item 删除的实现原理
|
5月前
|
网络架构 开发者 UED
Spartacus 2211 的 provideOutlet 方法扩展 UI
Spartacus 2211 的 provideOutlet 方法扩展 UI
Spartacus 2211 的 provideOutlet 方法扩展 UI
下一篇
无影云桌面