Nœuds finaux personnalisés

Vous pouvez utiliser l'API REST HCL Commerce fournie pour créer votre nœud final d'API personnalisé, par exemple pour récupérer des données destinées à être utilisées avec des applications personnalisées ou à être envoyées à d'autres services HCL ou tiers.

Création d'un nœud final personnalisé

Lorsque vous créez un nœud final personnalisé, votre nœud final peut être un encapsuleur autour de l'API REST de la vitrine HCL Commerce (Transaction server) existante. Votre nœud final personnalisé peut également être un code personnalisé que vous souhaitez utiliser avec votre magasin ou environnement HCL Commerce.

Toutes les API et tous les nœuds finaux personnalisés que vous créez pour votre magasin doivent être créés et combinés dans un environnement de développement basé sur HCL Commerce Developer en vue d'une utilisation dans le Customization server. Dans l'environnement de développement, une nouvelle archive custom-endpoints est incluse comme package dans le projet commerceue-ear. Vous pouvez utiliser ce package pour créer votre API de ressources. Un exemple de ressource que vous pouvez utiliser comme référence est inclus dans ce package. Cet exemple de ressource est un exemple de nœud final personnalisé qui s'intègre à l'API REST de HCL Commerce.

Lorsque vous créez votre propre nœud final personnalisé, vous devez inclure votre code personnalisé avec le répertoire custom-endpoints/src/main/java/com/ibm/commerce/custom/rest du projet commerceue-ear. Ce projet inclut une classe CustomApplication pour lier les ressources à l'application de nœuds finaux personnalisés.

Pour afficher ce processus de liaison, supprimez la mise en commentaire de la classe SampleResource pour la classe CustomApplication et examinez le traitement du code en mode débogage. La classe SampleResource comprend un exemple d'intégration d'API avec l'API REST de vitrine HCL Commerce.

Authentification

Tous les nœuds finaux personnalisés que vous créez ne sont pas protégés par défaut. Si vous écrivez sur votre API pour interroger ou accéder à l'API REST de vitrine, qui dispose de plus de privilèges pour accéder aux données et aux services, assurez-vous d'inclure l'authentification requise. Toute API qui utilise un nœud final personnalisé doit être authentifiée avant que l'API ne puisse accéder à n'importe quelle API REST de vitrine. L'authentification de l'API REST de vitrine utilise des jetons spécifiques à HCL Commerce pour l'authentification, appelés "jetons WC".

Les jetons WC que vous devez utiliser pour authentifier vos nœuds finaux personnalisés sont les mêmes que ce qu'un client utilise pour se connecter à votre magasin HCL Commerce. Les jetons WC sont générés pour authentifier les clients d'un magasin HCL Commerce chaque fois qu'un client se connecte au magasin. L'API login identity est appelée pour authentifier le client et génère les jetons requis. Pour plus d'informations, voir l'API REST de gestion d'authentification et de session.

Pour obtenir vos propres jetons WC, par exemple pour tester un nœud final personnalisé, appelez l'API login identity. Les jetons sont inclus dans la réponse pour la requête d'identité de connexion. Incluez vos jetons WC en tant qu'en-têtes de requête HTTP pour vos requêtes d'API REST de vitrine.

Pour en savoir plus sur la façon d'authentifier vos nœuds finaux personnalisés, examinez l'exemple de ressource pour les nœuds finaux personnalisés inclus dans HCL Commerce Developer. Utilisez l'exemple de ressource comme modèle pour authentifier vos nœuds finaux personnalisés.

Cet exemple de ressource montre comment authentifier un nœud final personnalisé avec un jeton WC pour obtenir des données client et comment authentifier une demande de données plus privilégiées, telles que des données qui ne concernent pas le client qui émet la requête. L'authentification permettant d'obtenir des données plus privilégiées utilise l'authentification supplémentaire fournie par HCL Commerce. Cette authentification supplémentaire utilise le standard JSON Web Token (JWT) généré par HCL Commerce pour authentifier les requêtes. Utilisez cet exemple de ressource pour vous aider à apprendre à structurer et à utiliser vos propres nœuds finaux personnalisés pour vous authentifier avec des jetons WC et JWT afin d'obtenir des données autres que les données du client.

Exemple de nœud final personnalisé

Un exemple de ressource de nœud final personnalisé est fourni avec trois exemples d'API qui appellent deux API REST de vitrine et une API tierce externe. Ces exemples d'API affichent également les différentes options d'authentification d'un nœud final personnalisé.

Pour tester l'échantillon de nœud final de ressource personnalisé dans votre environnement de programmation, ouvrez la classe /custom-endpoints/src/main/java/com/ibm/commerce/custom/rest/CustomApplication.java pour édition. Supprimez la mise en commentaire de la ligne où la classe SampleResource est ajoutée à l'application personnalisée. Enregistrez et redémarrez votre application commerceue.
s.add(SampleResource.class);

Lorsque vous appelez l'échantillon d'API de nœud final personnalisé, les jetons WC sont validés. Si la validation est réussie (la réponse de service est 200 OK), le traitement de la requête se poursuit. Vous pouvez utiliser cet exemple comme modèle pour écrire vos propres nœuds finaux personnalisés.

L'exemple de ressource comprend les requêtes aux API REST suivantes :
  • Obtenir tous les magasins.
    La ressource appelle cette API pour interroger le Transaction server afin d'obtenir une liste de tous les magasins.
    curl -X GET \
     https://{domain}:{port}/rest/custom/sample/store-list-with-jwt \
     -H 'Content-Type: application/json' \
     -H 'WCToken: {WCToken}' \
     -H 'WCTrustedToken: {WCTrustedToken}'

    Cette requête API authentifie d'abord l'utilisateur avec des jetons WC. En cas de succès, un JWT est généré pour la requête du client et signé pour une utilisation d'authentification de la requête API permettant d'obtenir les données du magasin. L'authentification JWT est requise car les données du magasin sont des données privilégiées qu'un client ne peut pas obtenir avec l'authentification par jetons WC.

  • Obtenez les données du compte utilisateur du client :
    curl -X GET \
     https://{domain}:{port}/rest/custom/sample/person-with-wctokens \
     -H 'Content-Type: application/json' \
     -H 'WCToken: {WCToken}' \
     -H 'WCTrustedToken: {WCTrustedToken}'

    La ressource appelle cette API pour interroger l'API REST de vitrine afin de récupérer des données sur l'utilisateur qui appelle l'API. La réponse inclut les données contextuelles pour l'utilisateur qui émet l'appel d'API REST.

    Cette requête API utilise les jetons WC pour l'authentification car la requête est étendue aux données du client.

  • L'exemple de ressource inclut également un exemple d'API de nœuds finaux personnalisée qui encapsule une API REST tierce externe. Cette ressource interroge une API REST hébergée sur IBM Cloud Functions pour obtenir le message "Hello World".
    curl -X GET \
     https://{domain}:{port}/rest/custom/sample/call-cloud-function \
     -H 'Content-Type: application/json' \
     -H 'WCToken: {WCToken}' \
     -H 'WCTrustedToken: {WCTrustedToken}'

    Cette requête API utilise les jetons WC pour l'authentification.