ReadPropertySet policy

Información general

La política ReadPropertySet lee conjuntos de propiedades y rellena la variable de flujo con los resultados.

Esta política es una política estándar y se puede implementar en cualquier tipo de entorno. Para obtener información sobre los tipos de políticas y la disponibilidad de cada tipo de entorno, consulta Tipos de políticas.

Elemento <ReadPropertySet>

Define una política ReadPropertySet.

Valor predeterminado Consulta la pestaña Política predeterminada que aparece más abajo.
¿Es obligatorio? Obligatorio
Tipo Objeto complejo
Elemento principal N/A
Elementos secundarios <Read>

El elemento <ReadPropertySet> utiliza la siguiente sintaxis:

Sintaxis

El elemento <ReadPropertySet> utiliza la siguiente sintaxis:

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  ...
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

Política predeterminada

En el siguiente ejemplo se muestran los ajustes predeterminados al añadir una política ReadPropertySet a tu flujo en la interfaz de usuario de Apigee:

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

Cuando insertas una nueva política ReadPropertySet en la interfaz de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Consulta la información sobre los elementos obligatorios más abajo.

Este elemento tiene los siguientes atributos, que son comunes a todas las políticas:

Atributo Predeterminado ¿Es obligatorio? Descripción
name N/A Obligatorio

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

Opcionalmente, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la interfaz de gestión con un nombre diferente en lenguaje natural.

continueOnError falso Opcional Asigna el valor false para devolver un error cuando falle una política. Este es el comportamiento esperado de la mayoría de las políticas. Asigna el valor true para que la ejecución del flujo continúe incluso después de que falle una política. Consulta también:
enabled true Opcional Asigna el valor true para aplicar la política. Selecciona false para desactivar la política. La política no se aplicará aunque siga adjunta a un flujo.
async   falso Obsoleto Este atributo está obsoleto.

En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <ReadPropertySet>:

Elemento secundario ¿Es obligatorio? Descripción
<Read> Obligatorio Lee y resuelve una variable de conjunto de propiedades y la asigna a una variable de flujo especificada.

<IgnoreUnresolvedVariables> Opcional Determina si el procesamiento se detiene cuando no se resuelve un conjunto de propiedades.

Ejemplo

En esta sección se muestra un ejemplo con <ReadPropertySet>.

Ejemplo

En este ejemplo se usa <ReadPropertySet> para obtener propertyset.environment.name.request.headers.api-version y asignarlo a target_url. Si no se obtiene el valor del conjunto de propiedades, se utiliza https://httpbin.org/get.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">environment.name</Name>
    <Key ref="key-ref">request.headers.api-version</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> 
</ReadPropertySet>

Referencia de elemento secundario

En esta sección se describen los elementos secundarios de <ReadPropertySet>.

<Read>

Resuelve una variable de conjunto de propiedades y establece el resultado en una variable de flujo.

El elemento <Read> especifica la variable del conjunto de propiedades que se va a resolver y la variable de flujo a la que se va a asignar ese valor. También incluye un valor predeterminado opcional, que se usa en caso de que no se resuelva el conjunto de propiedades. Puede incluir varios elementos <Read> en una sola política <ReadPropertySet>.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo Tipo complejo
Elemento principal <ReadPropertySet>
Elementos secundarios <Name>
<Key>
<AssignTo>
<DefaultValue>

El elemento <Read> utiliza la siguiente sintaxis:

Sintaxis

<Read>
  <Name ref="set-ref">property-set-name</Name>
  <Key ref="key-ref">key-name</Key>
  <AssignTo>var1</AssignTo>
  <DefaultValue>default-value</DefaultValue>
</Read>

Ejemplo

En este ejemplo se usa <ReadPropertySet> para obtener propertyset.environment.name.request.headers.api-version y asignarlo a target_url. Si no se obtiene el valor del conjunto de propiedades, se utiliza https://httpbin.org/get.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="environment.name">my-property-set-name</Name>
    <Key ref="request.headers.api-version">my-property-set-key</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ReadPropertySet>

En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <Read>.

Elemento secundario ¿Es obligatorio? Descripción
<Name> Obligatorio Cadena.

Propiedad definida para leer. Proporciona el ref, el valor o ambos.

Apigee primero intenta resolver el Name en función del ref y, a continuación, del valor. Si no se puede resolver ninguna de las dos, se aplica <DefaultValue>, si se ha proporcionado.

<Name> y <Key> se combinan para formar propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}.

<Key> Obligatorio Cadena.

Clave del conjunto de propiedades que se usa al resolver la variable. Proporciona el ref, el valor o ambos.

Apigee primero intenta resolver el Key en función del ref y, a continuación, del valor. Si no se puede resolver ninguna de las dos, se aplica <DefaultValue>, si se ha proporcionado.

<Name> y <Key> se combinan para formar propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}.

<AssignTo> Obligatorio Cadena

Especifica la variable de flujo a la que se asignará la variable resuelta.
<DefaultValue> Opcional Cadena

Especifica un valor predeterminado que se debe usar cuando no se pueda resolver la variable.

<IgnoreUnresolvedVariables>

Determina si el procesamiento se detiene cuando no se resuelve un conjunto de propiedades. Asigna el valor true para ignorar las variables sin resolver y continuar con el procesamiento.

IgnoreUnresolvedVariables no se aplica cuando se proporciona <DefaultValue>.

Valor predeterminado Falso
¿Es obligatorio? Opcional
Tipo Booleano
Elemento principal <ReadPropertySet>
Elementos secundarios Ninguno

Referencia de errores

En esta sección se describen los códigos de error y los mensajes de error que devuelve Apigee, así como las variables de error que se definen en Apigee para la política <ReadPropertySet>. Es importante conocer esta información si vas a desarrollar reglas de errores para gestionarlos. Para obtener más información, consulta Qué debes saber sobre los errores de las políticas y Cómo gestionar los fallos.

Errores de tiempo de ejecución

Estos errores pueden producirse cuando se ejecuta la política.

Código de fallo Estado de HTTP Causa
steps.readpropertyset.UnresolvedVariable 500

Este error se produce si una variable especificada en la política ReadPropertySet es:

  • Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política)
  • o
  • No se puede resolver (no está definido).

Si <IgnoreUnresolvedVariables> es false y <DefaultValue> no se especifica, la resolución falla.

Errores de implementación

Estos errores pueden producirse al implementar un proxy que contenga esta política.

Nombre del error Causa
steps.readpropertyset.EmptyReads La política no tiene elementos secundarios <Read>.
steps.readpropertyset.FieldUnset Este código se devuelve cuando se cumple alguna de estas condiciones:
  • No se ha definido ninguna referencia ni nombre para <Name>
  • No se ha definido ninguna referencia ni nombre para <Key>
  • No se ha proporcionado ningún valor para <AssignTo>

Variables de error

Estas variables se definen cuando esta política activa un error en el tiempo de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de las políticas.

Variables Dónde Ejemplo
fault.name="FAULT_NAME" FAULT_NAME es el nombre del fallo, tal como se indica en la tabla Errores de tiempo de ejecución de arriba. El nombre del error es la última parte del código de error. fault.name Matches "UnresolvedVariable"
readpropertyset.POLICY_NAME.failed POLICY_NAME es el nombre de la política especificado por el usuario que ha provocado el error. readpropertyset.RPS-SetResponse.failed = true

Ejemplo de respuesta de error

  {  
    "fault": {
      "faultstring": "ReadPropertySet[RPS-SetResponse]: unable to resolve variable [variable_name]",
      "detail": {
        "errorcode": "steps.readpropertyset.UnresolvedVariable"
      }
    }
  }
  

Regla de fallo de ejemplo

  <FaultRule name="ReadPropertySet Faults">
      <Step>
          <Name>RPS-CustomSetVariableErrorResponse</Name>
          <Condition>(fault.name = "SetVariableFailed")</Condition>
      </Step>
      <Condition>(readpropertyset.failed = true)</Condition>
  </FaultRule>
  

Esquemas

Cada tipo de política se define mediante un esquema XML (.xsd). Puedes consultar los esquemas de políticas en GitHub.