Balise : rest

La balise wcf:rest envoie des requêtes REST.

Cette balise JSP prend l'entrée et envoie des requêtes REST, puis compose des réponses dans un format spécifié. Une balise REST, définie comme un modèle, n'envoie pas de requête REST, mais conserve ses paramètres en mémoire en tant qu'entrée par défaut. Ensuite, il fournit un mécanisme qui peut réutiliser le modèle sans identifier tous les paramètres, seulement ceux modifiés. Cette approche est similaire à expressionBuilder dans le profil d'accès REST de la balise wcf:getData. Un paramètre est transmis à la balise REST pour déterminer le calcul du serveur et la quantité de données détaillées qui sont interrogées pour la ressource. Il prend en charge deux types de format. Un type de format est le même que le profil d'accès traditionnel et le profil de recherche dans un service Web, une chaîne significative qui indique uniquement les détails de requête. L'autre type de format est un format détaillé, qui identifie tous les champs requis de la ressource.

Une balise REST peut avoir plusieurs balises param. Ces balises sont composées dans la requête REST au serveur REST en tant que paramètre de requête ou corps de requête, qui inclut des paramètres communs tels que langId, currency, pageSize wcf:header.

Une balise REST peut avoir plusieurs balises d'en-tête. Ces balises sont composées dans la requête REST au serveur REST en tant qu'en-tête de requête, qui inclut des paramètres tels que WCToken et WCTrustedToken.

La balise wcf:rest met en cache les appels d'API REST au niveau de la requête à l'aide de la signature d'appel. Pour plus d'informations, voir Stratégies de mise en cache pour les services REST.

Informations sur la balise

Informations sur la balise
Contenu de l'élément 'Body' JSP

Attributs

Attributs

Nom Obligatoire Date/heure de la requête Type Description
var false true java.lang.String Ce paramètre identifie le nom de la variable, qui sera utilisé pour être mis en portée persistante comme la session ou la requête. Lorsque la balise est déclarée comme un modèle, ce paramètre peut être ignoré.
url false true java.lang.String Ce paramètre identifie l'URL réelle du service REST. Ce paramètre prend en charge les adresses absolues ou relatives. Pour les adresses relatives, un développeur doit identifier le chemin d'accès qui commence à partir du nom de la ressource. Le système ajoute automatiquement le nom de l'hôte, le chemin du servlet et le nom du magasin. Pour les adresses relatives, un développeur doit également spécifier le schéma HTTP, qui a la valeur http par défaut.
schema false true java.lang.String Ce paramètre spécifie le schéma lorsque le paramètre URL n'est pas un chemin d'accès absolu. Le système de balise obtient une certaine valeur par défaut depuis la configuration en tant que nom de l'hôte, chemin d'accès de contexte et storeId. Le paramètre de schéma est spécifié ici.
accessProfile false true java.lang.String L'accessProfile est utilisé pour appeler le service Web backend, qui décide de la quantité de données demandées, similaire au paramètre des champs. Le profil d'accès est préconfiguré sur le serveur REST et ne peut pas être modifié. Lorsque ce paramètre est spécifié, l'infrastructure REST utilise l'infrastructure transmise pour remplacer celle par défaut.
searchProfile false true java.lang.String Dans les services REST liés au catalogue, searchProfile est utilisé pour appeler le service Web backend, qui décide de la quantité de données demandées, similaire au paramètre des champs. searchProfile est préconfiguré sur le serveur REST et ne peut pas être modifié. Lorsque ce paramètre est spécifié, l'infrastructure REST utilise l'infrastructure transmise pour remplacer celle par défaut.
format false true java.lang.String Ce paramètre décide du format de la variable de sortie, qui peut être JSON, XML ou brut. La définition de la valeur sur json donne un objet de type JSONObject ou JSONArray en fonction des données renvoyées par l'API REST ; xml donne un objet de type org.w3c.dom.Document ; et raw donne un objet de type Chaîne.

La valeur par défaut de ce paramètre est json.

cached false true java.lang.String La mise en cache côté client peut être utilisée avec les fichiers JSP Storefront si le service REST appelé est marqué comme cacheable. (Notez que dans le cas du Magasin Aurora, le client est le serveur d'applications (conteneur servlet) hébergeant les pages JSP qui incluent les balises REST, et ainsi la mise en cache se produira sur le serveur d'applications, et non dans le navigateur qui consomme la sortie des pages JSP.) Afin d'utiliser la mise en cache côté client, définissez la valeur cached sur "true". Les réponses pour les requêtes REST sont basées sur l'URL précédente et les paramètres sont mis en cache à l'intérieur du cache de données appelé RESTTagCache, avec le nom JNDI du cache services/cache/WCRESTTagDistributedMapCache. Cette mise en cache s'applique aux services REST fournis par les serveurs de recherche HCL Commerce et HCL Commerce.
scope false false java.lang.String La portée du service REST.
headerStrategy false false java.lang.String Ce paramètre détermine comment les en-têtes HTTP sont composés dans la balise. Les valeurs admises sont les suivantes :
  • ignorer. La balise ignore les en-têtes dans la requête parente et ne respecte que les en-têtes dans le corps de la balise
  • inherit. La balise ne respecte que les touches d'en-tête dans le corps de la balise. Vous n'avez pas besoin de spécifier les valeurs lorsque la balise obtient les valeurs à partir de la requête parente.
  • mélanger(par défaut). La balise obtient toutes les valeurs d'en-tête à partir de la requête parente en tant que base. Si vous spécifiez également une valeur avec la même clé dans le corps de balise qui se trouve dans l'en-tête, la valeur est également ajoutée.
connectTimeout false false java.math.BigInteger Temps d'attente, en millisecondes, avant qu'une connexion HTTP au serveur cible ne soit établie. La valeur par défaut est 30000.
readTimeout false false java.math.BigInteger Temps d'attente, en millisecondes, avant qu'une réponse soit obtenue. La valeur par défaut est 30000.

de performances

La balise wcf:rest contient les éléments suivants :
  • wcf:header, qui ajoute un en-tête HTTP à une requête REST.
  • wcf:var, qui définit la variable au sein d'une requête REST.

Variables

Aucune variable n'est définie pour la balise wcf:rest.

Exemple

Normal usage to get a product
<wcf:rest var="product" url="productview/byId/10001"/>

Traitement des incidents

Certains paramètres sont codés par défaut dans l'appel REST. Le paramètre par défaut wcsRestTagSkipMandotorySearchEncoding en particulier peut provoquer un comportement inattendu si vous ne le prenez pas en compte lors d'appels REST construits. Par exemple, l'appel suivant échoue :
    <wcf:rest var="myProductData" url="/store/{storeId}/productview/{partNumber}">
     <wcf:var name="storeId" value="12051" encode="true"/>
     <wcf:var name="partNumber" value="VESTS-FabricBackVest_SKU" encode="true"/>
    </wcf:rest>
    ${myProductData}
result:
{"responseCode":404}
Cette erreur se produit, car url="/store/{storeId}/productview/{partNumber}" est codé côté serveur. Ce codage est contrôlé par l'attribut wcsRestTagSkipMandatorySearchEncoding dans le contexte de la page, qui modifie /store/{storeId}/productview/{prtn} d'entrée en /store/{storeId}/productview/%7Bprtn%7D. Un partNumber incorrect est alors renvoyé.
Vous pouvez éviter ce problème en ajoutant l'attribut au contexte de la page directement, sous la forme wcsRestTagSkipMandatorySearchEncoding=true. Toutefois, il s'agit d'un paramètre de recherche obligatoire. Une meilleure solution est de laisser JSP résoudre la valeur. Par exemple, l'appel suivant réussira :
<c:set var="partNumber" value="${value for the part number}"/>
<wcf:rest var="myProductData" url="/store/{storeId}/productview/${partNumber}">
     <wcf:var name="storeId" value="12051" encode="true"/>
    </wcf:rest>