Migration des services de vitrine

Toutes les pages de vitrine personnalisées qui utilisent l'un des services DBO CatalogNavigationView liés à la recherche doivent être mises à jour pour utiliser les nouveaux services REST du serveur de recherche correspondant.

Par exemple, le fragment suivant est un service de recherche BOD getData utilisé pour remplir un widget de recommandations d'entrée de catalogue :

<wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catalogNavigationView" 
expressionBuilder="getCatalogEntryViewDetailsByID" scope="request" varShowVerb="showCatalogNavigationView" 
maxItems="100" recordSetStartNumber="0" scope="request">
	<c:forEach var="marketingSpotData" items="${marketingSpotDatas.baseMarketingSpotActivityData}">
		<c:if test='${marketingSpotData.dataType eq "CatalogEntryId"}'>
			<wcf:param name="UniqueID" value="${marketingSpotData.uniqueID}"/>
		</c:if>
	</c:forEach>
	<wcf:contextData name="storeId" data="${storeId}" />
	<wcf:contextData name="catalogId" data="${catalogId}" />
	<wcf:param name="searchProfile" value="IBM_findCatalogEntryDetails_PriceMode"/>
</wcf:getData>
<c:set var="eSpotCatalogIdResults" value="${catalogNavigationView.catalogEntryView}"/>
Le fragment suivant est le service basé sur REST équivalent :

<wcf:rest var="catalogNavigationView" url="${searchHostNamePath}${searchContextPath}/store/${WCParam.storeId}/productview/byIds" >
<c:forEach var="id" items="${catentryIdQueryList}">
	<wcf:param name="id" value="${id}"/>
</c:forEach>
<wcf:param name="langId" value="${langId}" />
<wcf:param name="currency" value="${env_currencyCode}" />
<wcf:param name="responseFormat" value="json" />
<wcf:param name="catalogId" value="${WCParam.catalogId}" />
<wcf:param name="profileName" value="IBM_findProductByIds_Summary" />
</wcf:rest>
<c:set var="eSpotCatalogIdResults" value="${catalogNavigationView.catalogEntryView}"/>

Les données de réponse sont mises en forme dans une réponse de notation décimale semblable à BOD afin de minimiser les changements requis dans la vitrine. Dans certains cas, la réponse est simplifiée et mise à plat en paires nom-valeur plus simples, plutôt que d'utiliser des cartes internes pour regrouper certaines zones.

Vous pouvez examiner la réponse JSON en imprimant l'objet de réponse à l'aide du code suivant :

<wcf:json object="${catalogNavigationView}"/>
Vous pouvez également appeler le service REST directement à partir du navigateur Web ou en utilisant HTTPRequester ou un client équivalent pour valider votre code personnalisé :

http://searchServer:port/search/resources/store/1/productview/byId/10001?langId=-1&catalogId=10001¤cy=USD&responseFormat=json&pageSize=12&pageNumber=1 

Pour plus d'informations sur les mappages de services BOD vers REST, voir Mappage entre les services BOD HCL Commerce Search et les services REST.

Pour plus d'informations sur l'API REST HCL Commerce pour HCL Commerce Search, voir la liste complète des paramètres de requête pris en charge pour les services de recherche suivants :
  • search_product
  • search_category
  • search_site_content