Usar expressões para acessar valores de tempo de execução
As expressões permitem que os parâmetros do modelo de política obtenham seus valores de dados de tempo de execução. As funções podem acessar e transformar dados de tempo de execução dos cabeçalhos, da consulta e do corpo da solicitação e da resposta da API. Também é comum usar expressões para acessar dados das propriedades de conexão do conector. Por exemplo, @connectionParameters('HostUrl') obteria o valor configurado para a propriedade de conexão HostUrl, o que permitiria a um criador alterar a URL do serviço como parte da conexão, de forma semelhante a cenários de API de teste versus produção. Esta unidade examina algumas expressões comuns usadas com modelos de política.
Noções básicas de expressões
As expressões são avaliadas em tempo de execução. Uma expressão é uma sequência de uma ou mais funções, operadores ou valores explícitos. Ao definir uma expressão em um parâmetro, você prefixará a expressão com o sinal de arroba (@). Se a expressão resultar em um valor numérico, em que uma entrada de cadeia de caracteres é esperada, você poderá usar a notação de colchetes ({}), e ela converterá automaticamente o valor numérico em uma cadeia de caracteres.
O exemplo a seguir mostra como ambas as notações são usadas:
@{connectionParameters('HostPortNumber')}
Para garantir que as expressões não falhem devido a propriedades nulas, garanta que nada no caminho seja nulo. O exemplo a seguir falharia se summary fosse nulo:
@body().summary.amount
Se incluir valores explícitos (literais de cadeia de caracteres) nas expressões, use aspas simples. Não use aspas duplas, pois isso entrará em conflito com a marcação usada ao redor da expressão.
Trabalhar com o corpo da resposta
Você pode usar as funções body() para acessar o corpo da resposta em tempo de execução. Por exemplo, a ação Listar fatura retorna os seguintes dados:
{ “invoices”: [ { “invoiceid”:”1234”}] }
Nesse exemplo, a função body() faz referência aos colchetes externos ({}) e tem uma fatura de propriedade que é uma matriz.
Você pode criar uma expressão que faça referência à matriz faturas usando a seguinte lógica:
@body().invoices
Você também pode criar uma expressão que acesse o invoiceid do primeiro item na matriz usando a seguinte lógica:
@body().invoices[0].invoiceid
Trabalhar com valores de cabeçalho
Usando a expressão @headers('headerName'), você pode acessar os valores do cabeçalho. Você também pode usar a expressão @headers como um parâmetro de modelo de destino ao usar o modelo de política Definir cabeçalho da URL. Essa abordagem permite que você recupere um valor de uma URL e o defina no cabeçalho. Por exemplo, um conector pode usar essa expressão para obter um token de acesso do serviço a fim de permitir a postagem em uma página. O exemplo a seguir mostra como pode ser a configuração do modelo de política para obter o token de acesso da ação Postar na Página.
Trabalhar com valores de consulta
De forma semelhante ao trabalho com cabeçalhos, você pode usar a expressão @queryParameters('queryParameterName') para acessar os parâmetros de consulta da solicitação. O exemplo a seguir é semelhante ao exemplo anterior em relação aos cabeçalhos; no entanto, este exemplo coloca o token recuperado nos parâmetros de consulta.
Trabalhar com valores de conexão
Usando a expressão @connectionParameters('connectionParameterName'), você pode acessar os valores que foram inseridos quando a conexão foi configurada para o conector personalizado. Essa expressão permite coletar informações do usuário do conector personalizado, como valores de autenticação ou de URL do host. Você pode usar esses valores de parâmetro para criar URLs e preencher outros valores de configuração específicos da conexão.
Os parâmetros de conexão configurados no arquivo apiProperties.json são usados para criar a caixa de diálogo de conexão que o usuário preenche ao criar uma nova conexão.
Quando você configura a autenticação em um conector personalizado, ele edita automaticamente apiProperties para que você possa adicionar as propriedades de autenticação necessárias. Se tiver baixado a definição de conector usando paconn, ao consultar o arquivo apiProperties.json, você verá a lógica a seguir adicionada se tiver configurado a autenticação de Chave 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, você verá o campo de entrada a seguir ao criar uma conexão.
Você pode adicionar manualmente outros campos de entrada para coletar outros dados que são exclusivos de cada usuário do conector personalizado. Por exemplo, um campo comum a ser adicionado é URL do Host, para permitir que o conector funcione com vários pontos de extremidade da API subjacente. O exemplo a seguir mostra o arquivo apiProperties.json em que, além da chave de API, você permite a entrada de uma URL de host e um código de cobrança.
"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"
}
}
}
}
O uso dessa configuração resulta na exibição da caixa de diálogo de conexão a seguir.
Em seguida, você pode usar as expressões @connectionParameters('hostUrl') e @connectionParameters('billingCode') para usar os valores nas configurações de modelo de política.
O restante deste módulo mostra exemplos de uso de expressões e fornece mais explicações sobre como você pode usar modelos de política.