Saltar a contenido

Respuesta de Webservice

El op Webservice Response permite a la regla controlar los parámetros de respuesta HTTP en reglas de webservice.

La respuesta final se construye a partir de variables stash. Este op convertirá el YAML de respuesta de entrada en parámetros stash que llamarán a los métodos de respuesta correspondientes.

Este op no tiene efecto en tipos de reglas diferentes de reglas de Webservice.

Lea más sobre Reglas de Webservice para comprender mejor el contexto detrás de este op.

Configuración YAML de Respuesta

El único parámetro de configuración para este op es un campo YAML llamado Response.

La respuesta YAML es una estructura de datos de mapa/diccionario (también llamado hash). Las siguientes claves son válidas:

  • body:
  • data:
  • headers:
  • cookies:
  • location:
  • status:

Usando variables en la respuesta

Las variables stash se pueden usar en cualquier lugar del YAML:

data:
   my_key: ${some_stash_variable}
   your_location: ${ws_request.location}

body: (mutuamente excluyente con 'data:')

El body: es una cadena que se enviará de vuelta al solicitante del webservice tal cual. Esta es la respuesta recomendada al enviar datos de texto o contenidos de archivos.

Warning

Las entradas data: y body: son mutuamente excluyentes.

data: (mutuamente excluyente con 'body:')

Contiene un mapa clave-valor de datos para una respuesta JSON, XML o YAML.

Por ejemplo, el siguiente YAML de respuesta:

data:
   name: Me
   address: 123 Elm St.

Producirá el siguiente JSON de Respuesta:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8

{ "name": "Me", "address": "123 Elm St." }

Warning

Las entradas data: y body: son mutuamente excluyentes.

headers:

Un mapa clave-valor de encabezados que se enviarán como respuesta:

headers:
   content_type: application/csv
   Content-Disposition: attachment;filename=example.csv

Las claves se escribirán en mayúsculas y los espacios y guiones bajos se convertirán en guiones, para hacerlas compatibles con el protocolo HTTP y los estándares web.

cookies:

Este es un ayudante de encabezado para facilitar el envío de cookies como respuesta.

cookies:
   my-cookie:
      value: my cookie value
      expires: +3M   # relativo o solo una fecha
      max-age: +2D   # igual que expires, pero relativo
      path: /  # cookie solo devuelta a rutas coincidentes
      domain: mydomain # controla qué dominios obtendrán la cookie
      secure: 1
      httponly: 1  # hace que la cookie sea inaccesible mediante JavaScript

content_type:

Esto establecerá el encabezado de respuesta Content-Type. Es un atajo a headers: { content_type: ... }.

content_type: application/json
data:
   somekey: 123

status:

Establece el estado HTTP de la respuesta.

Típicamente, no es necesario establecer el estado, ya que esto se hace automáticamente por el servidor Clarive al generar la respuesta final del webservice.

Si se establece un valor, sobrescribirá la respuesta del servidor.

Tenga en cuenta que establecer un estado HTTP incorrecto puede causar un comportamiento no deseado en cualquiera de los puntos finales a lo largo de la ruta solicitud-respuesta.

location:

Establece el encabezado de respuesta location. Esto es solo un atajo a headers: { location: .... }

URL de Solicitud de Webservice

Para controlar aún más la respuesta, es importante usar la URL de llamada correcta a la regla del webservice.

El significado de los parámetros data: (y body:) depende de la parte de formato de ruta URL de la solicitud a la regla. Esto significa que la misma regla podría llamarse con diferentes formatos de datos de solicitud: json, xml, raw.

Significados del parámetro data::

  • https://clariveserver/rule/raw/: YAML
  • https://clariveserver/rule/json/: JSON
  • https://clariveserver/rule/xml/: XML

Significados del parámetro body::

  • https://clariveserver/rule/raw/: YAML
  • https://clariveserver/rule/json/: no se usa
  • https://clariveserver/rule/xml/: el contenido de cadena de body se envuelve dentro de la siguiente plantilla XML <clarive>(body)</clarive>, y body se traducirá a la estructura de datos correspondiente.