Personalización y configuración de los recursos REST mediante la infraestructura de correlación de BOD

Los servicios REST se construyen sobre servicios OAGIS y utilizan un perfil de acceso y XPath para obtener datos de un nombre OAGIS. Los perfiles de acceso utilizados por los servicios REST se definen de forma predeterminada en un archivo de configuración. Puede ampliar el archivo de configuración para sobrescribir la correlación de datos.

El archivo de configuración predeterminado se encuentra en la siguiente ubicación:
  • Rest.war/WEB-INF/config/com.ibm.commerce.rest/wc-rest-resourceconfig.xml
Puede ampliar la configuración con el siguiente archivo:
  • Rest.war/WEB-INF/config/com.ibm.commerce.rest-ext/wc-rest-resourceconfig.xml

Personalización de recursos de REST

Cuando se personaliza el archivo de configuración, se deben tener en cuenta los factores siguientes:
  1. Decida qué nombre de recurso desea personalizar. Por ejemplo, productview.
  2. Decida qué GetUri desea personalizar. Por ejemplo, el primer GetUri en el siguiente fragmento de código que obtiene productos según el número de pieza:
    
    <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. A continuación, cree su propio archivo wc-rest-resourceconfig.xml bajo el directorio siguiente:
    • Search-Rest/WEB-INF/config/com.ibm.commerce.rest-ext
    Copie los elementos GetUri que desea utilizar en el archivo de extensión y cambie accessProfile o searchProfile para que se ajuste a sus necesidades. Por ejemplo:
    
    <ResourceConfig>
    <Resource name="productview">
    <GetUri uri="store/{storeId}/productview/{partNumber}" description="Get product by part number" 
    accessProfile="MyCustomProfile"/>
    
    </Resource>
    </ResourceConfig>
    
    Si amplía el perfil de búsqueda, debe especificar el perfil de búsqueda: Por ejemplo:
    
    <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>
    

    Los servicios REST pasan el perfil de búsqueda para el servicio OAGIS subyacente. Si no se especifica ningún perfil de búsqueda en wc-rest-resourceconfig.xml de extensión, se utiliza el perfil de búsqueda predeterminado definido en wc-rest-resourceconfig.xml.

  4. Después de completar los escenarios de personalización, debe reiniciar HCL Commerce Server.

Ejemplo: Definición del URI para recuperar datos

Puede utilizar los siguientes fragmentos de código de ejemplo para recuperar datos:

<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>