Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
A política GraphQL pode analisar payloads de pedidos GraphQL em variáveis de fluxo de mensagens, validar o pedido em relação a um esquema GraphQL ou ambos.
A política GraphQL pode analisar payloads GraphQL em variáveis de fluxo de mensagens, validar pedidos GraphQL em relação a um esquema ou ambos.
Pode usar a política de GraphQL para:
- Certifique-se de que as suas APIs apenas processam pedidos em conformidade com o esquema que fornece.
- Imponha restrições ao payload definindo um máximo para o número de fragmentos permitidos.
- Associe o GraphQL a produtos de API.
- Tirar partido das funcionalidades Oauth2, VerifyAPIKey e Quota policy, tal como no REST.
O GraphQL suporta os seguintes tipos de payloads:
- POST de payloads GraphQL com
Content-Type : application/graphql - POST de payloads GraphQL com
Content-Type: applcation/json - GET de payloads GraphQL em que o payload é um parâmetro de consulta
Para um resumo rápido das opções da política de GraphQL, consulte as opções de GraphQL abaixo.
Para saber mais sobre o GraphQL, consulte GraphQL.org.
Exemplo
O exemplo seguinte mostra como carregar um esquema GraphQL para o Apigee e usá-lo para validar pedidos com conteúdo GraphQL.
Crie um ficheiro de esquema
Para executar o exemplo, comece por criar um ficheiro de esquema GraphQL com o seguinte conteúdo:
type Query {
allPersons(last: Int): [Person!]!
}
type Mutation {
createPerson(name: String!, age: Int!): Person!
}
type Subscription {
newPerson: Person!
}
type Person {
name: String!
sex: String!
age: Int!
posts: [Post!]!
}
type Post {
title: String!
author: Person!
}Guarde o ficheiro com o nome que quiser usar, seguido da extensão .graphql.
Adicione a política GraphQL na IU do Apigee
Novo editor de proxy
Primeiro, crie a política GraphQL da seguinte forma:
- Inicie sessão na IU do Apigee.
- Na barra de navegação, selecione Desenvolver > Proxies de API.
- Na lista de proxies, selecione o proxy de API para o qual quer usar a política GraphQL.
- Clique no separador DESENVOLVER.
- No painel do lado esquerdo, clique no botão + junto à pasta Políticas.
Na caixa de diálogo Criar política, clique no campo Selecionar tipo de política e desloque a página para baixo até Mediação e selecione GraphQL.

Introduza um Nome a apresentar e um Nome.
Em seguida, selecione um ficheiro de esquema GraphQL da seguinte forma:
- Clique no campo Ficheiro de esquema. São apresentadas as seguintes opções:
- Sem esquema. Se selecionar esta opção, o Apigee não usa um esquema para validar pedidos.
- Importe o esquema GraphQL (.graphql)
Selecione Importar esquema GraphQL (.graphql). Apresenta o seguinte:
Clique em Escolher ficheiro e selecione o ficheiro de esquema que criou anteriormente (que tem de ter a extensão
.graphql). O ficheiro é apresentado no campo Nome do esquema.
- Clique no campo Ficheiro de esquema. São apresentadas as seguintes opções:
- Clique em Criar para criar a política.
Agora que criou a política GraphQL, pode anexá-la a um passo no PreFlow:
- Selecione Proxy Endpoints > default > PreFlow no painel do lado esquerdo:

- Clique no botão + junto a PreFlow no painel Resposta
na parte inferior direita do editor visual:

- Na caixa de diálogo Adicionar passo de política, selecione a política GQL-.
- Clique em Adicionar para anexar a política.
- Clique em Guardar para guardar a revisão atual com as suas alterações.
- Para implementar as alterações, clique no separador Vista geral e selecione Implementar.
Consulte as opções do GraphQL abaixo para ver as opções que pode definir para a política de GraphQL.
Editor de proxy clássico
- Inicie sessão na IU do Apigee.
- Na barra de navegação, selecione Desenvolver > Proxies de API.
- Na lista de proxies, selecione o proxy de API para o qual quer usar a política GraphQL.
- Clique no separador DESENVOLVER.
No painel Fluxo: PreFlow, clique no botão + Passo.
No painel Adicionar passo, desloque a página para baixo até à parte inferior da secção Mediação e selecione GraphQL.
O painel Adicionar passo apresenta as seguintes opções:
- Nome a apresentar: nome a apresentar da política.
- Nome: nome interno da política.
- Ficheiro de esquema: opção para carregar um ficheiro que contenha um esquema GraphQL que o Apigee vai usar para validar pedidos com conteúdo GraphQL.
Para usar um esquema, faça o seguinte:
- Clique no campo Ficheiro de esquema. São apresentadas as seguintes opções:
- Sem esquema. Se selecionar esta opção, o Apigee não usa um esquema para validar pedidos.
- Importe o esquema GraphQL (.graphql)
Selecione Importar esquema GraphQL (.graphql). Apresenta o seguinte:
Clique em Escolher ficheiro e selecione o ficheiro de esquema que criou anteriormente (que tem de ter a extensão
.graphql). O ficheiro é apresentado no campo Nome do esquema.
Clique em Adicionar. O painel Fluxo: PreFlow é agora apresentado conforme indicado abaixo:
Consulte as opções do GraphQL abaixo para ver as opções que pode definir para a política de GraphQL. Para este exemplo, deixe-os como estão.
Para implementar o proxy, clique no separador Vista geral e selecione Implementar.
Agora, pode testar a política de GraphQL com o seguinte comando curl:
curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query query_name {allPersons {name}}' -kEm que PROXY_BASEPATH é o caminho base do proxy e HOST_NAME é o nome do seu proxy, incluindo o número da revisão mais recente. Quando executa o comando, o Apigee valida o pedido em relação ao esquema e devolve o seguinte resultado.
{
"query query_name {allPersons {name}}": "",
"id": 101
}Segue-se outro exemplo de um pedido:
curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query ilovegql {DEADBEEF}' -kDesta vez, a validação do pedido falha com a seguinte mensagem de erro.
{"fault":{"faultstring":"steps.graphQL.SchemaValidationFailed","detail":{"errorcode":"steps.graphQL.SchemaValidationFailed"}}}Opções do GraphQL
A GraphPolicy tem as seguintes opções:
OperationType: o tipo de operação. As opções são:query: o equivalente em GraphQL da operação RESTGET.mutation: o equivalente em GraphQL da operação RESTPUT.query_mutation: ambosqueryemutation.
MaxDepth: a profundidade máxima da consulta, quando representada como uma árvore.MaxDepthpermite-lhe bloquear consultas detalhadas no payload, para que o Apigee não precise de criar variáveis de fluxo muito grandes para armazenar os valores. No entanto, a carga útil é enviada tal como está, independentemente do valor deMaxDepth.MaxCount: o número máximo de fragmentos que podem estar na carga útil. Pode usar esta opção para impedir que o servidor de back-end GraphQL do cliente execute consultas altamente complexas, o que obriga os clientes a dividir a respetiva lógica em payloads mais pequenos.Action: Uma das seguintes ações do GraphQL:parseO Apigee analisa a carga útil do GraphQL nas variáveis de fluxo. Em seguida, pode usar o conteúdo das variáveis de fluxo em políticas como JavaCallout. Tenha em atenção que oparsetambém valida a carga útil.verify: o Apigee verifica se a carga útil do GraphQL está em conformidade com o esquema carregado para o proxy. Pode usarverifypara garantir que não recebe pedidos que não estejam em conformidade com o seu esquema. Isto pode poupar tempo valioso da CPU no back-end.parse_verify: analise e valide a carga útil.
ResourceURL: O caminho para o ficheiro de esquema GraphQL que o Apigee usa para validar o pedido GraphQL.`
Para saber mais acerca destas opções, consulte a página de referência da política de GraphQL.