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: Todas as camadas de gerenciamento de API
Use a choose política para aplicar condicionalmente declarações de política com base nos resultados da avaliação de expressões booleanas. Use a política para fluxo de controle semelhante a uma construção if-then-else ou switch em uma linguagem de programação.
Nota
Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.
Declaração de política
<choose>
<when condition="Boolean expression | Boolean constant">
<!— one or more policy statements to be applied if the above condition is true -->
</when>
<when condition="Boolean expression | Boolean constant">
<!— one or more policy statements to be applied if the above condition is true -->
</when>
<otherwise>
<!— one or more policy statements to be applied if none of the above conditions are true -->
</otherwise>
</choose>
A choose política deve conter pelo menos um <when/> elemento. O <otherwise/> elemento é opcional. As condições dos <when/> elementos são avaliadas por ordem de aparecimento na política. A(s) declaração(ões) de política incluída(s) no primeiro <when/> elemento com atributo de true condição igual a será aplicada. As políticas incluídas no <otherwise/> elemento , se presentes, serão aplicadas se todos os <when/> atributos de condição do elemento forem false.
Elementos
| Elemento | Descrição | Obrigatório |
|---|---|---|
| Quando… | Um ou mais elementos que especificam as if partes da ifelsechoose política. Se vários when elementos forem especificados, eles serão avaliados sequencialmente. Uma vez que o condition elemento de um quando é avaliado como true, nenhuma outra when condição é avaliada. |
Sim |
| caso contrário, | O trecho da política a ser avaliado se nenhuma das when condições for avaliada como true. |
Não |
quando atributos
| Atributo | Descrição | Obrigatório |
|---|---|---|
| condição | A expressão booleana ou constante booleana a ser avaliada quando a declaração de política que contém when é avaliada. |
Sim |
Utilização
- Seções de política: entrada, saída, back-end, no erro
- Âmbitos de política: global, área de trabalho, produto, API, operação
- Gateways: clássico, v2, consumo, auto-hospedado, espaço de trabalho
Exemplos
Modificar solicitação e resposta com base no agente do usuário
O exemplo a seguir demonstra uma política set-variable e duas políticas de fluxo de controle.
A política de variável definida está na seção de entrada e cria uma variável de isMobile contexto booleano que é definida como true se o cabeçalho da User-Agent solicitação contiver o texto iPad ou iPhone.
A primeira política de fluxo de controle também está na seção de entrada e aplica condicionalmente uma das duas políticas de parâmetro de cadeia de caracteres de consulta set dependendo do valor da isMobile variável de contexto.
A segunda política de fluxo de controle está na seção de saída e aplica condicionalmente a política Converter XML em JSON quando isMobile estiver definida como true.
<policies>
<inbound>
<set-variable name="isMobile" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iPad") || context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iPhone"))" />
<base />
<choose>
<when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))">
<set-query-parameter name="mobile" exists-action="override">
<value>true</value>
</set-query-parameter>
</when>
<otherwise>
<set-query-parameter name="mobile" exists-action="override">
<value>false</value>
</set-query-parameter>
</otherwise>
</choose>
</inbound>
<outbound>
<base />
<choose>
<when condition="@(context.Variables.GetValueOrDefault<bool>("isMobile"))">
<xml-to-json kind="direct" apply="always" consider-accept-header="false"/>
</when>
</choose>
</outbound>
</policies>
Modificar a resposta com base no nome do produto
Este exemplo mostra como executar a filtragem de conteúdo removendo elementos de dados da resposta recebida do serviço de back-end ao usar o Starter produto. O exemplo de resposta de back-end inclui propriedades de nível raiz semelhantes à API de chamada do OpenWeather One.
<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the product -->
<choose>
<when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
<set-body>@{
var response = context.Response.Body.As<JObject>();
foreach (var key in new [] {"current", "minutely", "hourly", "daily", "alerts"}) {
response.Property (key).Remove ();
}
return response.ToString();
}
</set-body>
</when>
</choose>
Políticas relacionadas
Conteúdos relacionados
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transforme e proteja sua API
- Referência de política para uma lista completa de declarações de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Recompra de trechos de política
- Política de recompra de parques infantis
- Kit de ferramentas de política de Gerenciamento de API do Azure
- Obtenha assistência do Copilot para criar, explicar e resolver problemas com políticas