Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)
Os Aplicativos Lógicos do Azure dão suporte a todos os tipos de conteúdo, como JSON, XML, arquivos simples e dados binários. Embora alguns tipos de conteúdo tenham suporte nativo, o que significa que não precisam de adaptação ou conversão, outros tipos de conteúdo exigem algum trabalho para obter 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 de Content-Type cabeçalho nas solicitações HTTP que os fluxos de trabalho obtêm 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/sem formatação (tipo nativo)
- Fluxo de dados de aplicativo/xml e aplicativo/octet
- Outros tipos de conteúdo
Este guia descreve como o Azure Logic Apps lida com diferentes tipos de conteúdo e mostra como lançar ou converter corretamente esses tipos quando necessário.
aplicativo/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 necessidade de casting 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 de 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 casting ou conversão.
A
body()função obtém obodyobjeto de saída da açãoMy_action.Do objeto retornado
body, a função acessa oclientobjeto.O
clientobjeto contém aanimal-typepropriedade, que é definida como uma matriz.A função acessa o primeiro item do 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, você 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 gatilho do fluxo de trabalho. Esse objeto normalmente é um objeto JSON.A origem do
bodyobjeto se origina da solicitação HTTP de entrada ou evento recebido pelo gatilho de 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 tratamento 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 que possa referenciar mais facilmente essas propriedades e seus valores em seu fluxo de trabalho.
A lista a seguir descreve as operações comuns de fluxo de trabalho e as maneiras correspondentes de gerar tokens para propriedades no conteúdo JSON:
O gatilho Solicitação nomeado Quando uma solicitação HTTP é recebida
Ao trabalhar no designer com o gatilho Solicitação , 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 referenciar e usar facilmente essas propriedades e seus valores em ações subsequentes em seu fluxo de trabalho.
As etapas a seguir descrevem como você pode fornecer um conteúdo de exemplo para gerar um esquema JSON:
No designer, selecione o gatilho Solicitar para abrir o painel de informações.
Na guia Parâmetros, na caixa Esquema JSON do Corpo da Solicitação, selecione Usar conteúdo de exemplo para gerar o esquema.
Na caixa Inserir ou colar uma carga JSON de exemplo, insira um conteúdo de exemplo e selecione Concluído.
O esquema gerado agora aparece no gatilho.
No editor de exibição de código, você pode examinar a definição de JSON subjacente para o gatilho de solicitação :
"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 disparar o 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 cliente ou um aplicativo de onde você pode enviar uma solicitação HTTP para a URL do fluxo de trabalho ou disparar a URL. Verifique se a solicitação inclui um cabeçalho chamado Content-Type e o valor do cabeçalho está definido como application/json.
Ação analisar JSON
Ao usar essa ação no designer, você pode analisar a saída JSON e gerar tokens amigáveis que representam as propriedades no conteúdo JSON. É possível então facilmente referenciar e usar essas propriedades em todo o fluxo de trabalho do aplicativo lógico.
Semelhante ao gatilho Solicitar, é possível fornecer ou gerar um esquema JSON que descreva o conteúdo JSON que você quer analisar. Dessa forma, será mais fácil consumir dados do Barramento de Serviço do Azure, Azure Cosmos DB e assim por diante.
texto/sem formatação
Se o fluxo de trabalho receber solicitações HTTP em que o valor do cabeçalho Content-Type for texto/sem formatação. Os Aplicativos Lógicos do Azure armazenam e manipulam o conteúdo de forma bruta. Se você referenciar ou usar esse conteúdo em ações de fluxo de trabalho subsequentes 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 usa 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())
Fluxo de dados de aplicativo/xml e aplicativo/octet
Os Aplicativos Lógicos do Azure sempre preservam o valor do cabeçalho Content-Type em uma solicitação ou resposta HTTP de entrada. Se o fluxo de trabalho receber conteúdo com Content-Type configurado como application/octet-stream e você incluir esse conteúdo em uma ação subsequente sem conversão, a solicitação de saída também configurará 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 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 de conversor
Para preservar alguns tipos de dados, os Aplicativos Lógicos do Azure convertem conteúdo em uma cadeia de caracteres codificada em base64 binário. Essa cadeia de caracteres tem os metadados apropriados que preservam o conteúdo $content 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 emapplication/json. -
xml(): converte dados emapplication/xml. -
binary(): converte dados emapplication/octet-stream. -
string(): converte dados emtext/plain. -
base64(): converte o 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 de fluxo de trabalho receba uma solicitação HTTP em que \Content-Type está configurado para \application/xml e o conteúdo se assemelha ao seguinte exemplo:
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Você pode converter esse conteúdo usando a seguinte expressão, que usa as funções xml() e triggerBody():
xml(triggerBody())
Em seguida, você pode usar o conteúdo resultante com as ações subsequentes no fluxo de trabalho. Ou você pode usar a seguinte expressão que usa as funções xpath() e xml():
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 pode ser necessário que você obtenha manualmente o corpo da mensagem de uma solicitação HTTP decodificando a variável $content.
Por exemplo, suponha que seu fluxo de trabalho receba uma solicitação HTTP em que 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 em que o conteúdo é codificado como uma cadeia de caracteres base64:
CustomerName=Frank&Address=123+Avenue
Esse tipo de conteúdo não está no formato JSON ou texto sem formatação, portanto, os Aplicativos Lógicos do Azure armazenam CustomerName=Frank&Address=123+Avenue usando as seguintes $content-type variáveis:$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, usar application/x-www-url-formencoded como o valor de cabeçalho Content-Type, adicione o conteúdo da solicitação ao corpo da ação sem conversão usando uma expressão como body('formdataAction'). Esse método só funcionará se o corpo da ação for o único parâmetro no body objeto de entradas. Se você usar a body('formdataAction') expressão em uma solicitação em que o tipo de conteúdo está application/json, você receberá um erro de runtime porque o corpo é enviado codificado.