使用帶有參數請求選項的 HttpParams 類在 HttpRequest 中添加 URL 查詢字符串。
下面的例子,searchHeroes() 方法查詢名字中包含搜索詞的英雄。
首先導入 HttpParams 類,如下圖高亮代碼所示:
如果有搜索詞,代碼會使用 HTML URL 編碼的搜索參數構造一個選項對象。 例如,如果術語是“cat”,則 GET 請求 URL 将是 api/heroes?name=cat。
HttpParams 對象是不可變的。 如果您需要更新選項,請保存 .set() 方法的返回值。
下面是 Spartacus Customer Search 的一個例子:
上述代碼設置了兩個參數,baseSite
值為當前處于 active 狀态的 base site 值,而 sort 參數硬編碼為 byNameAsc
.
使用用戶名 asagent
登錄 ASM module 之後,在 customer 字段輸入客戶名,比如 jerry
,能看到 Chrome 開發者工具 network 面闆的請求:
url:
https://xxx:9002/assistedservicewebservices/customers/search?baseSite=electronics-spa&sort=byNameAsc&query=jerry&pageSize=20
url 裡的 query 和 pageSize 的參數,設置代碼如下:
customerSearch(
options: CustomerSearchOptions
): Observable {
const headers = InterceptorUtil.createHeader(
USE_CUSTOMER_SUPPORT_AGENT_TOKEN,
true,
new HttpHeaders()
);
let params: HttpParams = new HttpParams()
.set('baseSite', this.activeBaseSite)
.set('sort', 'byNameAsc');
if (typeof options['query'] !== 'undefined') {
params = params.set('query', '' + options.query);
}
if (typeof options['pageSize'] !== 'undefined') {
params = params.set('pageSize', '' + options.pageSize);
}
const url = this.occEndpointsService.buildUrl(
'asmCustomerSearch',
{},
{
baseSite: false,
prefix: false,
}
);
return this.http
.get(url, { headers, params })
.pipe(this.converterService.pipeable(CUSTOMER_SEARCH_PAGE_norMALIZER));
}
按照 Spartacus 數據交換的慣例,這個 adapter 被 connector 調用:
connector 的 customerSearch 方法被 Customer Effect 調用,後者在接收到 Ngrx AsmActions.CUSTOMER_SEARCH
之後就會觸發:
這裡提到的 ASM,是 SAP Commerce Cloud 中的一個附加組件。它允許客戶服務代表以客戶身份登錄店面或網站,并獲得與客戶相同的店面視圖。 登錄後,代理可以代表客戶執行任何操作。
此功能在 b2c_acc_plus
和 b2b_acc_plus
配方中開箱即用。 但是,如果您已使用其他一些常用模塊(例如 b2c_acc 或 b2b_acc)初始化 SAP Hybris,仍然可以使用 ASM 模塊。
屬于 Agent
或其相關組的任何員工都可以像任何客戶一樣登錄和模拟,并執行客戶可以執行的所有操作。
原文地址:https://cloud.tencent.com/developer/article/2138104
有話要說...