Usar expresiones para acceder a los valores en runtime

Completado

Las expresiones permiten que los parámetros de la plantilla de directivas obtengan sus valores de los datos en runtime. Las funciones pueden acceder y transformar los datos en runtime de los encabezados, la consulta y el cuerpo de la solicitud, y la respuesta de la API. También es habitual usar expresiones para acceder a los datos de las propiedades de conexión del conector. Por ejemplo, @connectionParameters('HostUrl') obtendría el valor configurado para la propiedad de conexión HostUrl, lo que permitiría a un fabricante cambiar la URL del servicio como parte de la conexión, de forma similar a los escenarios de API de prueba frente a producción. Esta unidad revisa algunas expresiones comunes que se utilizan con las plantillas de directivas.

Conceptos básicos de las expresiones

Las expresiones se evalúan en runtime. Una expresión es una secuencia de una o más funciones, operadores o valores explícitos. Al definir una expresión en un parámetro, deberá anteponer la expresión con el signo arroba (@). Si su expresión da como resultado un valor numérico donde se espera la entrada de una cadena, puede usar la notación de llaves ({}); el valor numérico se convertirá automáticamente en una cadena.

El siguiente ejemplo muestra cómo se utilizan ambas notaciones:

@{connectionParameters('HostPortNumber')}

Para asegurarse de que sus expresiones no incurran en errores debido a propiedades NULL, asegúrese de que nada en la ruta sea NULL. El siguiente ejemplo produciría errores si resumen fuera nulo:

@body().summary.amount

Si incluye valores explícitos (cadenas literales) en sus expresiones, utilice comillas simples. No use comillas dobles, porque entrará en conflicto con el marcado que se usa alrededor de la expresión.

Trabajar con el cuerpo de la respuesta

Puede usar las funciones body() para acceder al cuerpo de la respuesta en runtime. Por ejemplo, la acción Enumerar facturas devuelve los siguientes datos:

{ “invoices”: [ { “invoiceid”:”1234”}] }

En este ejemplo, la función body() hace referencia a las llaves externas ({}) y tiene una factura de propiedad que es una matriz.

Podría crear una expresión que haga referencia a la matriz de facturas utilizando la lógica siguiente:

@body().invoices

También puede crear una expresión que acceda a id. de factura desde el primer elemento de la matriz, utilizando la siguiente lógica:

@body().invoices[0].invoiceid

Trabajar con valores de encabezados

Con la expresión @headers('headerName'), puede acceder a los valores desde el encabezado. También puede utilizar la expresión @headers como parámetro de plantilla de destino al utilizar la plantilla de directiva Establecer encabezado desde URL. Este enfoque le permite recuperar un valor de una URL y luego establecerlo en el encabezado. Por ejemplo, un conector podría usar esta expresión para obtener un token de acceso del servicio para permitir el registro en una página. El siguiente ejemplo muestra cuál podría ser la apariencia de la configuración de la plantilla de directiva para obtener el token de acceso para la acción Publicar en la página.

Trabajar con valores de consultas

De manera similar al trabajo con encabezados, puede usar la expresión @queryParameters('queryParameterName') para acceder a los parámetros de consulta de la solicitud. El siguiente ejemplo es similar al ejemplo anterior en lo relativo a los encabezados; sin embargo, este ejemplo coloca el token recuperado en los parámetros de consulta.

Trabajar con valores de conexiones

Con la expresión @connectionParameters('connectionParameterName'), puede acceder a los valores que se introdujeron cuando se configuró la conexión para el conector personalizado. Esta expresión le permite recopilar información del usuario de su conector personalizado, como la autenticación o los valores de la URL del host. Puede utilizar estos valores de parámetro para crear URL y completar otros valores de configuración específicos de la conexión.

Los parámetros de conexión que están configurados en el archivo apiProperties.json se utilizan para crear el cuadro de diálogo de conexión que el usuario rellena al crear una nueva conexión.

Cuando configura la autenticación en un conector personalizado, se edita automáticamente apiProperties, para que pueda agregar las propiedades de autenticación necesarias. Si ha descargado la definición de su conector usando paconn, si busca en el archivo apiProperties.json, verá la siguiente lógica agregada si ha configurado la autenticación Clave de API.

"api_key": {
        "type": "securestring",
        "uiDefinition": {
          "displayName": "API Key",
          "description": "The API Key for your environment",
          "tooltip": "Provide your API Key",
          "constraints": {
            "tabIndex": 2,
            "clearText": false,
            "required": "true"
          }
        }

Como resultado, aparecerá el siguiente campo de entrada al crear una conexión.

Puede agregar manualmente otros campos de entrada para recopilar otros datos que sean únicos para cada usuario del conector personalizado. Por ejemplo, un campo común para agregar es URL de host, para que pueda permitir al conector funcionar con varios puntos de conexión de la API subyacente. El siguiente ejemplo muestra el archivo apiProperties.json en el que, además de la clave de API, está permitiendo la entrada de una URL de host y un código de facturación.

"properties": {
    "connectionParameters": {
      "hostUrl": {
        "type": "string",
        "uiDefinition": {
          "constraints": {
            "required": "true"
          },
          "description": "Specify your API URl e.g. https://test.contoso.com",
          "displayName": "API URL",
          "tooltip": "Specify your API URl e.g. https://test.contoso.com"
        }
      },
      "billingCode": {
        "type": "string",
        "uiDefinition": {
          "constraints": {
            "required": "true"
          },
          "description": "billing code",
          "displayName": "Billing Code",
          "tooltip": "Billing Code"
        }
      },
      "api_key": {
        "type": "securestring",
        "uiDefinition": {
          "displayName": "API Key",
          "description": "The API Key for your environment",
          "tooltip": "Provide your API Key",
          "constraints": {
            "tabIndex": 2,
            "clearText": false,
            "required": "true"
          }
        }
      }
    }

El uso de esta configuración da como resultado que se muestre el siguiente cuadro de diálogo de conexión.

A continuación, puede usar las expresiones @connectionParameters ('hostUrl') y @connectionParameters ('billingCode') para utilizar los valores en las configuraciones de su plantilla de directivas.

El resto de este módulo muestra ejemplos de uso de expresiones mientras explica además cómo puede usar plantillas de directivas.