Ajout ou modification de modèles REST

Pour que les personnalisations du contrôleur d'action Spring puissent communiquer avec le Transaction server et le Search server, leurs ajouts et personnalisations doivent être convertis en messages REST structurés. Le modèle REST associe chaque méthode de contrôleur d'action à l'appel REST approprié via HTTP. Par conséquent, toute modification des actions par défaut ou de tout autre contrôleur d'action ou méthode de contrôleur d'action doit disposer des mappages de modèle REST correspondants.

Les modèles REST par défaut se trouvent dans le fichier suivant : crs-web/WebContent/WEB-INF/xml/config/componentDir/rest-template-config.xml

Procédure

  1. Etendez le fichier de configuration du modèle REST pour le composant que vous modifiez ou créez dans l'archive Web des magasins (crs-web.war).

    Pour étendre ce modèle, copiez-le directement dans crs-web.war/WEB-INF/xml/config/componentDir/rest-template-config-ext.xml. S'il s'agit d'un nouveau composant, veillez à l'ajouter sous un nouveau répertoire de composant (componentDir).

    L'emplacement et le contenu de ce fichier sont les suivants :

    Les modèles REST définissent les formats de requête pour les services REST qui sont exécutés par les contrôleurs Spring sur le Store server. Chaque contrôleur d'action appelle les services REST tels que définis dans les modèles REST pour l'exécution de la logique métier. Les services REST définis dans les modèles REST sont regroupés par définitions de ressources et chaque définition de ressource est subdivisée en définitions de méthode :
    • Une ressource est caractérisée par un chemin qui est un préfixe d'URI commun à un groupe de services REST.
    • Chaque définition de méthode est caractérisée par le chemin restant après le chemin de ressource dans l'URI complète d'un service REST.
    Chaque ressource ou méthode a un nom. Un nom de ressource et un nom de méthode peuvent identifier de manière unique un service REST. Pour chaque définition de méthode, un modèle est défini pour composer une demande REST à partir des paramètres d'une demande Web. Pour chaque contrôleur d'action Spring, le nom de ressource et le nom de méthode du service REST devant être exécuté par ce contrôleur sont définis par une propriété de la définition de ce contrôleur dans le fichier XML de configuration Spring.
    • crs-web.war/WEB-INF/xml/config/componentDir/rest-template-config.xml

      Ces fichiers contiennent la configuration du modèle REST pour chaque composant.

      Le contenu de ces fichiers apparaît comme suit :

      <resource path="{serverHost}/{contextPath}/store/{storeId}/loginidentity" name="loginIdentityHandler">
      <serverParam name="serverHost">$WCParam.serverHost</serverParam>
      <serverParam name="storeId">$WCParam.storeId</serverParam>
      …
      <method name="logonAndChangePassword" httpMethod="POST" path="">
      <template>
      <![CDATA[{"logonId" :
            "$logonId","logonPassword" :
            "$logonPasswordOld","logonPasswordNew" :
            "$logonPassword","logonPasswordVerify"
            : "$logonPasswordVerify"}]]>
      </template>
      </method>
      …
      </resource>
      Où :
      resource
      Ressource REST.
      chemin
      URL de la ressource REST. La variable de cette URL est modifiée dynamiquement. Par conséquent, elle doit être placée entre accolades ('{}'), et sa valeur est définie par les entrées serverParam suivantes.
      nom
      Nom de ressource défini du service.
      serverParam
      Cet élément est un sous-élément de la balise de ressource.

      Variables utilisées dans le chemin de la ressource. Les variables serverHost, contextPath et storeId sont automatiquement résolues pour être les valeurs pour le serveur HCL Commerce d'arrière-plan, basé sur le schéma de requête et le mode d'aperçu en cours. D'autres paramètres sont obtenus à partir des paramètres de demande actuels.

      méthode
      Cet élément est un sous-élément de la balise de ressource.

      Définition de la méthode.

      nom
      Nom de la méthode définie. Avec le nom de la ressource, il devient la propriété de paramètre définie dans la définition du contrôleur d'action. Par exemple, pour cet exemple de service, le paramètre est loginIdentityHandler.logonAndChangePassword.
      httpMethod
      Méthode HTTP pour cette demande REST.
      path
      Partie de la méthode de la ressource REST dans l'URL. Par exemple, le chemin de la méthode pour le service /store/{storeId}/person/@self est @self. Si ce paramètre est laissé vide, l'URL du chemin de ressource utilisée est l'URL complète.
      modèle
      Valeurs d'entrée requises par la demande REST au format JSON. Pour les services POST, PUT et DELETE, le corps JSON est au format de ce modèle. Pour les services GET, les variables du modèle sont ajoutées dans l'URL en tant que paramètres de requête. Les valeurs des variables sont trouvées à partir des propriétés de la demande, en utilisant les valeurs des modèles sans le signe dollar comme nom de la propriété de la demande. Si une valeur de variable ne comporte pas le signe dollar, la valeur de variable dans le modèle est la valeur composée à la demande REST.
    Remarque : Vous n'avez pas besoin de configurer le format de réponse REST pour le modèle REST. Le format de réponse est configuré en fonction du serveur de transactions.
  2. Modifiez le modèle REST en fonction de la ressource ou de la méthode REST que vous créez, étendez ou modifiez.
  3. Sauvegardez le fichier.
  4. Redémarrez le serveur du magasin.

Résultats

Les messages REST transmis entre le Store server et les Transaction server et Search server sont désormais conformes au nouveau modèle configuré.