Personnalisation et configuration des ressources REST à l'aide de la structure de mappage BOD

Les services REST sont construits sur les services OAGIS, et utilisent un profil d'accès et un chemin XPath pour obtenir des données à partir d'un nom OAGIS. Les profils d'accès utilisés par les services REST sont définis par défaut dans un fichier de configuration. Vous pouvez étendre le fichier de configuration pour remplacer le mappage de données.

Le fichier de configuration par défaut est stocké à l'emplacement suivant :
  • Rest.war/WEB-INF/config/com.ibm.commerce.rest/wc-rest-resourceconfig.xml
Vous pouvez étendre la configuration avec le fichier suivant :
  • Rest.war/WEB-INF/config/com.ibm.commerce.rest-ext/wc-rest-resourceconfig.xml

Personnalisation des ressources REST

Lors de la personnalisation du fichier de configuration, vous devez tenir compte des facteurs suivants :
  1. Déterminer quel nom de ressource vous souhaitez personnaliser. Par exemple, productview.
  2. Déterminer quelle GetUri vous souhaitez personnaliser. Par exemple, la première GetUri dans le fragment suivant qui obtient des produits par numéro de pièce :
    
    <Resource name="productview">
    <GetUri uri="store/{storeId}/productview/{partNumber}" description="Get product by part number" 
    accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryAll"/>
    
    <GetUri uri="store/{storeId}/productview/byId/{productId}" description="Get product by unique ID" 
    accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryAll"/>
    
    <GetUri uri="store/{storeId}/productview/byCategory/{categoryId}" description="Get products by category unique ID" 
    accessProfile="IBM_Store_Details" searchProfile="IBM_findCatalogEntryByNameAndShortDescription"/> 
    
    <GetUri uri="store/{storeId}/productview/bySearchTerm/{searchTerm}" description="Search products by search term and meta data" 
    accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryByNameAndShortDescription"/> 
    </Resource>
    
  3. Ensuite, créez votre propre fichier wc-rest-resourceconfig.xml sous le répertoire suivant :
    • Search-Rest/WEB-INF/config/com.ibm.commerce.rest-ext
    Copiez les éléments GetUri que vous souhaitez utiliser dans votre fichier d'extension et modifiez le accessProfile ou le searchProfile pour répondre à vos besoins. Par exemple :
    
    <ResourceConfig>
    <Resource name="productview">
    <GetUri uri="store/{storeId}/productview/{partNumber}" description="Get product by part number" 
    accessProfile="MyCustomProfile"/>
    
    </Resource>
    </ResourceConfig>
    
    Si vous étendez le profil de recherche, vous devez également spécifier le profil de recherche. Par exemple :
    
    <ResourceConfig>
    <Resource name="productview">
    <GetUri uri="store/{storeId}/productview/{partNumber}" description="Get product by part number"
    accessProfile="MyCompany_Store_Warranty" searchProfile="IBM_findProductByIds_Details,IBM_findProductByIdsWithAttributesAndAttachments,IBM_findProductByIds_Summary,IBM_findProductByIds_Summary_WithNoEntitlementCheck,IBM_Admin_findProductByIds,X_MySearchProfile"/>
    </Resource> 
    </ResourceConfig>
    

    Les services REST transmettent le profil de recherche au service OAGIS sous-jacent. Si aucun profil de recherche n'est spécifié dans votre extension wc-rest-resourceconfig.xml, le profil de recherche par défaut défini dans wc-rest-resourceconfig.xml est utilisé.

  4. Après avoir terminé vos scénarios de personnalisation, vous devez redémarrer votre serveur HCL Commerce.

Exemple : Définition de l'URI pour la récupération de données

Vous pouvez utiliser les exemples de fragments suivants pour récupérer des données :

<Resource name="productview">
<GetUri uri="store/{storeId}/productview/{partNumber}" description="Get product by part number" 
accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryAll"/>

<GetUri uri="store/{storeId}/productview/byId/{productId}" description="Get product by unique ID" 
accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryAll"/>

<GetUri uri="store/{storeId}/productview/byCategory/{categoryId}" description="Get products by category unique ID" 
accessProfile="IBM_Store_Details" searchProfile="IBM_findCatalogEntryByNameAndShortDescription"/> 

<GetUri uri="store/{storeId}/productview/bySearchTerm/{searchTerm}" description="Search products by search term and meta data" 
accessProfile="IBM_Store_CatalogEntrySearch" searchProfile="IBM_findCatalogEntryByNameAndShortDescription"/> 
</Resource>