Enviar pedido
APLICA-SE A: Todas as camadas de gerenciamento de API
A send-request
política envia a solicitação fornecida para a URL especificada, aguardando não mais do que o valor de tempo limite definido.
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
<send-request mode="new | copy" response-variable-name="" timeout="60 sec" ignore-error
="false | true">
<set-url>request URL</set-url>
<set-method>...</set-method>
<set-header>...</set-header>
<set-body>...</set-body>
<authentication-certificate thumbprint="thumbprint" />
<proxy>...</proxy>
</send-request>
Atributos
Atributo | Description | Necessário | Predefinição |
---|---|---|---|
modo | Determina se esta é uma new solicitação ou um copy dos cabeçalhos e corpo na solicitação atual. Na seção de política de saída, mode=copy não inicializa o corpo da solicitação. São permitidas expressões de política. |
Não | new |
nome-variável-resposta | O nome da variável de contexto que receberá um objeto de resposta. Se a variável não existir, ela será criada após a execução bem-sucedida da política e ficará acessível por meio context.Variable de coleta. São permitidas expressões de política. |
Sim | N/A |
tempo limite | O intervalo de tempo limite em segundos antes da chamada para a URL falhar. São permitidas expressões de política. | Não | 60 |
ignorar-erro | Se true e a solicitação resultar em um erro, o erro será ignorado e a variável de resposta conterá um valor nulo. Expressões de política não são permitidas. |
Não | false |
Elementos
Elemento | Description | Obrigatório |
---|---|---|
set-url | O URL do pedido. São permitidas expressões de política. | Não, caso mode=copy contrário, sim. |
método-conjunto | Define o método da solicitação. Expressões de política não são permitidas. | Não, caso mode=copy contrário, sim. |
set-header | Define um cabeçalho na solicitação. Use vários set-header elementos para vários cabeçalhos de solicitação. |
Não |
corpo-conjunto | Define o corpo da solicitação. | Não |
certificado-autenticação | Certificado a ser usado para autenticação de cliente, especificado em um thumbprint atributo. |
Não |
procuração | Solicitação de rotas via proxy HTTP. | Não |
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: dedicado, de consumo, auto-hospedado, espaço de trabalho
Notas de utilização
Se sua instância de Gerenciamento de API for implantada (injetada) em uma VNet no modo interno e você usar essa política para enviar uma solicitação de API para uma API exposta na mesma instância de Gerenciamento de API, poderá encontrar um tempo limite com um erro HTTP 500 BackendConnectionFailure. Este é o resultado de uma limitação do Azure Load Balancer.
Para encadear solicitações de API ao gateway nesse cenário, configure set-url
para usar a URL https://127.0.0.1
de loopback localhost . Além disso, defina o cabeçalho para especificar o HOST
host de gateway dessa instância de Gerenciamento de API. Você pode usar o padrão azure-api.net
ou seu host de domínio personalizado. Por exemplo:
<send-request>
<set-url>https://127.0.0.1/myapi/myoperation</set-url>
<set-header name="Host">
<value>myapim.azure-api.net</value>
</set-header>
</send-request>
Para obter mais informações, consulte esta postagem no blog.
Exemplo
Este exemplo mostra uma maneira de verificar um token de referência com um servidor de autorização. Para obter mais informações sobre este exemplo, consulte Usando serviços externos do serviço de Gerenciamento de API do Azure.
<inbound>
<!-- Extract token from Authorization header parameter -->
<set-variable name="token" value="@(context.Request.Headers.GetValueOrDefault("Authorization","scheme param").Split(' ').Last())" />
<!-- Send request to Token Server to validate token (see RFC 7662) -->
<send-request mode="new" response-variable-name="tokenstate" timeout="20" ignore-error="true">
<set-url>https://microsoft-apiappec990ad4c76641c6aea22f566efc5a4e.azurewebsites.net/introspection</set-url>
<set-method>POST</set-method>
<set-header name="Authorization" exists-action="override">
<value>basic dXNlcm5hbWU6cGFzc3dvcmQ=</value>
</set-header>
<set-header name="Content-Type" exists-action="override">
<value>application/x-www-form-urlencoded</value>
</set-header>
<set-body>@($"token={(string)context.Variables["token"]}")</set-body>
</send-request>
<choose>
<!-- Check active property in response -->
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
<!-- Return 401 Unauthorized with http-problem payload -->
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="WWW-Authenticate" exists-action="override">
<value>Bearer error="invalid_token"</value>
</set-header>
</return-response>
</when>
</choose>
<base />
</inbound>
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
- Kit de ferramentas de política de Gerenciamento de API do Azure
- Criar políticas usando o Microsoft Copilot no Azure