Etiqueta: REST

La etiqueta wcf:rest envía solicitudes de REST.

Esta etiqueta JSP toma entrada y envía solicitudes de REST y, a continuación, compone las respuestas en un formato especificado. Una etiqueta REST, que se define como una plantilla, no envía solicitudes de REST pero conserva sus parámetros en la memoria como entrada predeterminada. A continuación, proporciona un mecanismo que puede reutilizar la plantilla sin identificar todos los parámetros, solo los modificados. Este enfoque es similar a expressionBuilder en el perfil de acceso de REST de la etiqueta wcf:getData. Se pasa un parámetro a la etiqueta REST para determinar el cálculo del servidor y cuántos datos detallados se consultan para el recurso. Admite dos tipos de formato. Un tipo de formato es el mismo al del perfil de acceso tradicional y el perfil de búsqueda en un servicio Web, una cadena significativa que indica solo los detalles de consulta; el otro tipo de formato es detallado, que identifica todos los campos necesarios del recurso.

Una etiqueta REST puede tener varias etiquetas param. Estas etiquetas se componen en la solicitud de REST al servidor de REST como un parámetro o un cuerpo de solicitud, que incluye parámetros comunes como langid, Currency o pageSize wcf:header.

Una etiqueta REST puede tener varias etiquetas de cabecera. Estas etiquetas se componen en la solicitud de REST al servidor de REST como una cabecera de solicitud, que incluye parámetros como WCToken y WCTrustedToken.

Las API de REST de las memorias caché de la etiqueta wcf:rest llaman al nivel de solicitud utilizando la firma de llamada. Para obtener más información, consulte Almacenamiento en memoria caché para servicios REST.

Información de etiqueta

Información de etiqueta
Contenido del cuerpo JSP

Atributos

Atributos

Nombre: Obligatorio Tiempo de petición Tipo Descripción:
var false true java.lang.String Este parámetro identifica el nombre de variable, que se utilizará para colocarse en un ámbito persistente como sesión o solicitud. Cuando la etiqueta se declara como una plantilla, este parámetro se puede ignorar.
url false true java.lang.String Este parámetro identifica el URL real del servicio de REST. Este parámetro admite las direcciones absolutas o relativas. Para las direcciones relativas, un desarrollador debe identificar la vía de acceso que empieza desde el nombre de recurso. El sistema añade automáticamente el nombre de host, la vía de acceso del servlet y el nombre de la tienda. Para las direcciones relativas, un desarrollador también necesita especificar el esquema de HTTP, que toma de forma predeterminada el valor http.
schema false true java.lang.String Este parámetro especifica el esquema cuando el parámetro URL no es una vía de acceso absoluta. El sistema de etiquetas obtiene un valor predeterminado de la configuración como nombre de host, vía de acceso de contexto y storeId. Aquí se especifica el parámetro Schema.
accessProfile false true java.lang.String AccessProfile se utiliza para invocar el servicio Web de fondo, que decide la cantidad de datos que se solicitan, similar al parámetro Fields. El perfil de acceso se configura previamente en el servidor de REST y no se puede cambiar. Cuando se especifica este parámetro, la infraestructura de REST utiliza el transmitido para sustituir el predeterminado.
searchProfile false true java.lang.String En los servicios de REST relacionados con el catálogo, searchProfile se utiliza para invocar el servicio Web de fondo, que decide la cantidad de datos que se solicita, similar al parámetro Fields. El searchProfile está preconfigurado en el servidor de REST y no se puede cambiar. Cuando se especifica este parámetro, la infraestructura de REST utiliza el transmitido para sustituir el predeterminado.
format false true java.lang.String Este parámetro decide el formato de la variable de salida, que puede ser JSON, XML o RAW. Si se establece el valor en JSON, se proporciona un objeto de tipo objeto JSONObject o JSONArray en función de los datos devueltos por la API de REST; XML proporciona un objeto en tipo org.w3c.dom.Document y raw proporciona un objeto en tipo String.

El valor predeterminado para este parámetro es json.

cached false true java.lang.String El almacenamiento en memoria caché del lado del cliente se puede utilizar con archivos JSP de escaparate si el servicio REST al que se llama se marca como cacheable. (Tenga en cuenta que en el caso de la tienda Aurora, el cliente es el servidor de aplicaciones (contenedor de Servlets) que aloja las páginas JSP que incluyen los códigos de REST y, por lo tanto, el almacenamiento en memoria caché se producirá en el servidor de aplicaciones y no en el navegador que consume la salida de las páginas JSP.) Para poder utilizar el almacenamiento en memoria caché del lado del cliente, establezca el valor de cached en "true". La respuesta de solicitudes REST basada en el URL y los parámetros anteriores se almacena en memoria caché dentro de la memoria caché de datos que se llama RESTTagCache, con el nombre JNDI de memoria caché services/cache/WCRESTTagDistributedMapCache. Este almacenamiento en memoria caché es aplicable a los servicios REST proporcionados por ambos servidores, HCL Commerce y búsqueda de HCL Commerce.
scope false false java.lang.String El ámbito del servicio REST.
headerStrategy false false java.lang.String Este parámetro decide cómo se componen las cabeceras de HTTP en la etiqueta. Los valores permitidos son:
  • Ignorar. La etiqueta ignora las cabeceras de la solicitud padre y solo respeta las cabeceras con el cuerpo del código
  • heredar. La etiqueta sólo respeta las claves de cabecera en el cuerpo del código. No es necesario especificar los valores ya que la etiqueta obtiene los valores de la solicitud padre.
  • mix(predeterminado). La etiqueta obtiene todos los valores de cabecera de la solicitud padre como base. Si también especifica un valor con la misma clave en el cuerpo de la etiqueta que está en la cabecera, también se añade el valor.
connectTimeout false false java.math.BigInteger El tiempo que se debe esperar, en milisegundos, antes de que se establezca una conexión de HTTP con el servidor de destino. El valor predeterminado es 30.000.
readTimeout false false java.math.BigInteger El tiempo que se debe esperar, en milisegundos, antes de que se obtenga una respuesta. El valor predeterminado es 30.000.

elementos

La etiqueta wcf:rest contiene los elementos siguientes:
  • wcf:header, que añade una cabecera HTTP a una solicitud de REST.
  • wcf:var, que establece la variable dentro de una solicitud de REST.

Variables

No se han definido variables para la etiqueta wcf:rest.

Ejemplo

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

Solución de problemas

Algunos parámetros se codifican de forma predeterminada en la llamada de REST. El parámetro predeterminado wcsRestTagSkipMandatorySearchEncoding en particular puede producir un comportamiento inesperado si no lo tiene en cuenta cuando se construyan llamadas de REST. Por ejemplo, la siguiente llamada falla:
    <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}
Este error se produce porque url="/store/{storeId}/productview/{partNumber}" se codifica del lado del servidor. Esta codificación está controlada por el atributo wcsRestTagSkipMandatorySearchEncoding en el contexto de página, que cambia la entrada /store/{storeId}/productview/{prtn} a /store/{storeId}/productview/%7Bprtn%7D. Esto hace que se devuelva un partNumber incorrecto.
Puede evitar este problema añadiendo el atributo al contexto de página directamente, como wcsRestTagSkipMandatorySearchEncoding=true. Sin embargo, se trata de un parámetro de búsqueda obligatorio. Una solución mejor es permitir que JSP resuelva el valor. Por ejemplo, la siguiente llamada será exitosa:
<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>