Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)
As Aplicações Lógicas do Azure suportam todos os tipos de conteúdo, como JSON, XML, ficheiros simples e dados binários. Enquanto alguns tipos de conteúdo têm suporte nativo, o que significa que não precisam de transmissão ou conversão, outros tipos de conteúdo precisam de algum trabalho para fornecer o formato necessário.
Para ajudar a determinar a melhor maneira de lidar com conteúdo ou dados em fluxos de trabalho, os Aplicativos Lógicos do Azure usam o valor do Content-Type cabeçalho nas solicitações HTTP que os fluxos de trabalho recebem de chamadores externos.
A lista a seguir inclui alguns valores de exemplo Content-Type que um fluxo de trabalho pode encontrar:
- Application/JSON (tipo nativo)
- texto/simples (tipo nativo)
- application/xml e application/octet-stream
- Outros tipos de conteúdo
Este guia descreve como os Aplicativos Lógicos do Azure lidam com diferentes tipos de conteúdo e mostra como moldar ou converter corretamente esses tipos quando necessário.
application/json
Para uma solicitação HTTP em que o valor do Content-Type cabeçalho é application/json, os Aplicativos Lógicos do Azure armazenam e manipulam o conteúdo como um objeto JSON (JavaScript Object Notation). Por padrão, você pode analisar o conteúdo JSON sem qualquer transmissão ou conversão. Você também pode analisar esse conteúdo usando uma expressão.
Por exemplo, a expressão a seguir usa a body() função com My_action, que é o nome JSON para uma ação predecessora no fluxo de trabalho:
body('My_action')['client']['animal-type'][0]
As etapas a seguir descrevem como a expressão funciona sem transmissão ou conversão:
A
body()função obtém obodyobjeto de saída daMy_actionação.A partir do objeto retornado
body, a função acessa oclientobjeto.O
clientobjeto contém aanimal-typepropriedade, que é definida como uma matriz.A função acede ao primeiro item no array e retorna diretamente o valor 'dog' sem 'casting' ou conversão.
Se você trabalha com dados JSON que não usam um Content-Type cabeçalho, pode converter manualmente esses dados em JSON usando a função json(), por exemplo:
json(triggerBody())['client']['animal-type']
A função
triggerBody()obtém o objetobodyda saída do disparador do fluxo de trabalho. Este objeto é normalmente um objeto JSON.A origem do
bodyobjeto origina-se da solicitação HTTP de entrada ou do evento recebido pelo gatilho do fluxo de trabalho.A
json()função analisa explicitamente obodyobjeto retornado datriggerBody()função como um objeto JSON.Esse comportamento é útil, por exemplo, quando o corpo do gatilho é uma cadeia de caracteres que requer manipulação como JSON.
O comportamento da expressão restante é semelhante ao exemplo anterior.
Criar tokens para propriedades JSON
Nos Aplicativos Lógicos do Azure, você pode gerar tokens amigáveis que representam as propriedades no conteúdo JSON. Em seguida, você pode usar esses tokens para fazer referência mais facilmente a essas propriedades e seus valores em seu fluxo de trabalho.
A lista a seguir descreve operações comuns de fluxo de trabalho e as maneiras correspondentes de gerar tokens para propriedades no conteúdo JSON:
Gatilho de solicitação chamado Quando uma solicitação HTTP é recebida
Ao trabalhar no designer com o gatilho Request , você pode, opcionalmente, fornecer um esquema JSON que define os objetos JSON, as propriedades e os tipos de dados esperados para cada valor de propriedade. Se você não tiver um esquema JSON, poderá fornecer um exemplo de carga útil para gerar um esquema JSON que você pode usar.
O gatilho usa o esquema para analisar o conteúdo JSON de solicitações HTTP de entrada e gerar tokens que representam as propriedades no conteúdo JSON. Em seguida, você pode facilmente referenciar e usar essas propriedades e seus valores em ações subsequentes em seu fluxo de trabalho.
As etapas a seguir descrevem como você pode fornecer um exemplo de carga útil para gerar um esquema JSON:
No designer, selecione o acionador Solicitação para abrir o painel de informações.
Na guia Parâmetros , na caixa Esquema JSON do Corpo da Solicitação , selecione Usar carga útil de exemplo para gerar esquema.
Na caixa Introduzir ou colar uma carga JSON de amostra, insira o conteúdo e clique em Concluído.
O esquema gerado agora aparece no seu gatilho.
No editor de visualização de código, você pode revisar a definição JSON subjacente para o gatilho Request :
"triggers": { "When_an_HTTP_request_is_received": { "type": "Request", "kind": "Http", "inputs": { "schema": { "type": "object", "properties": { "client": { "type": "object", "properties": { "animal-type": { "type": "array", "items": { "type": "string" }, }, "name": { "type": "string" } } } } } } } }Para acionar seu fluxo de trabalho, obtenha a URL do fluxo de trabalho ou a URL HTTP do gatilho, que é gerada depois que você salva o fluxo de trabalho pela primeira vez.
Para testar o fluxo de trabalho, use uma ferramenta de cliente ou aplicativo a partir do qual você pode enviar uma solicitação HTTP para a URL do fluxo de trabalho ou URL de gatilho. Verifique se a solicitação inclui um cabeçalho chamado Content-Type e se o valor do cabeçalho está definido como application/json.
Analisar ação JSON
Ao usar essa ação no designer, você pode analisar a saída JSON e gerar tokens amigáveis que representam as propriedades em seu conteúdo JSON. Em seguida, você pode facilmente referenciar e usar essas propriedades em todo o fluxo de trabalho do seu aplicativo lógico.
Semelhante ao gatilho Request, você pode fornecer ou gerar um esquema JSON que descreva o conteúdo JSON que você deseja analisar. Dessa forma, você pode consumir mais facilmente dados do Barramento de Serviço do Azure, do Azure Cosmos DB e assim por diante.
text/plain
Se o seu fluxo de trabalho receber solicitações HTTP em que o valor do Content-Type cabeçalho é texto/simples. Os Aplicativos Lógicos do Azure armazenam e manipulam o conteúdo em formato bruto. Caso faça referência ou utilize este conteúdo em ações subsequentes do fluxo de trabalho sem casting ou conversão, as solicitações de saída também terão o valor do cabeçalho Content-Type definido como text/plain.
Por exemplo, suponha que você esteja trabalhando com um arquivo simples e a solicitação HTTP de entrada tenha o valor do Content-Type cabeçalho definido como text/plain:
Date,Name,Address
Oct-1,Frank,123 Ave
Se você enviar essa solicitação para uma ação subsequente que use o corpo da solicitação para enviar outra solicitação, a segunda solicitação também terá o valor do Content-Type cabeçalho definido como text/plain. Se você trabalha com dados em texto sem formatação, mas não especificou um cabeçalho, pode converter manualmente esses dados em texto usando a string() função, por exemplo:
string(triggerBody())
application/xml e application/octet-stream
Azure Logic Apps preserva sempre o valor do cabeçalho Content-Type em qualquer solicitação ou resposta HTTP recebida. Se o fluxo de trabalho receber conteúdo com Content-Type definido como application/octet-stream e incluir esse conteúdo numa ação subsequente sem efetuar uma conversão, o pedido de saída também será definido por Content-Type para application/octet-stream. Essa abordagem garante que os dados não se percam durante a movimentação pelo fluxo de trabalho. Em fluxos de trabalho com monitoração de estado, o estado, as entradas e as saídas da ação subsequente são armazenados em um objeto JSON enquanto o estado se move pelo fluxo de trabalho.
Funções do conversor
Para preservar alguns tipos de dados, os Aplicativos Lógicos do Azure convertem conteúdo em uma cadeia de caracteres binária codificada em base64. Essa cadeia de caracteres tem os metadados apropriados que preservam a $content carga útil e o $content-type, que são convertidos automaticamente.
A lista a seguir descreve como os Aplicativos Lógicos do Azure convertem conteúdo quando você usa funções específicas:
-
json(): Converte dados paraapplication/json. -
xml(): Converte dados paraapplication/xml. -
binary(): Converte dados paraapplication/octet-stream. -
string(): Converte dados paratext/plain. -
base64(): Converte conteúdo em uma cadeia de caracteres codificada em base64. -
base64toString(): Converte uma cadeia de caracteres codificada em base64 emtext/plain. -
base64toBinary(): Converte uma cadeia de caracteres codificada em base64 emapplication/octet-stream. -
dataUri(): Converte uma cadeia de caracteres em um URI de dados. -
dataUriToBinary(): Converte um URI de dados em uma cadeia de caracteres binária. -
dataUriToString(): Converte um URI de dados em uma cadeia de caracteres.
Por exemplo, suponha que o gatilho do fluxo de trabalho receba uma solicitação HTTP em que Content-Type esteja definido como application/xml, onde o conteúdo se assemelha ao exemplo a seguir:
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Você pode transmitir este conteúdo usando a seguinte expressão, que utiliza as funções xml() e triggerBody().
xml(triggerBody())
Em seguida, você pode usar o conteúdo resultante com ações subsequentes no fluxo de trabalho. Ou podes usar a seguinte expressão que usa as funções xpath() e xml() em vez disso:
xpath(xml(triggerBody()), '/CustomerName')
Outros tipos de conteúdo
Os Aplicativos Lógicos do Azure dão suporte a outros tipos de conteúdo, mas podem exigir que você obtenha manualmente o corpo da mensagem de uma solicitação HTTP decodificando a $content variável.
Por exemplo, suponha que seu fluxo de trabalho receba uma solicitação HTTP onde Content-Type está definido como application/x-www-url-formencoded. Para preservar todos os dados, o corpo da solicitação inclui a $content variável onde a carga é codificada como uma cadeia de caracteres base64:
CustomerName=Frank&Address=123+Avenue
Esse tipo de conteúdo não está em formato de texto simples ou JSON, portanto, os Aplicativos Lógicos do Azure armazenam CustomerName=Frank&Address=123+Avenue usando as seguintes variáveis $content-type e $content:
"body": {
"$content-type": "application/x-www-url-formencoded",
"$content": "AAB1241BACDFA=="
}
Os Aplicativos Lógicos do Azure também incluem funções nativas para lidar com dados de formulário, por exemplo:
Ou, você pode acessar manualmente os dados usando uma expressão como o exemplo a seguir:
string(body('formdataAction'))
Para fazer uma solicitação de saída, utilize application/x-www-url-formencoded como valor do cabeçalho Content-Type, adicionando o conteúdo da solicitação ao corpo da ação sem qualquer conversão, usando uma expressão como body('formdataAction'). Este método funciona somente se o corpo da ação for o único parâmetro no objeto body inputs. Se você usar a body('formdataAction') expressão em uma solicitação onde o tipo de conteúdo é application/json, você receberá um erro de tempo de execução porque o corpo é enviado codificado.