graphql-execute
Use a política " graphql-execute para executar uma consulta GraphQL usando subconsultas.
Suporte de gateway
| Gateway | Versão da política |
|---|---|
| DataPower® API Gateway | 2.2.0.0DataPower API Gateway versão 10.0.4.0 e posterior) 2.2.1.0DataPower API Gateway versão 10.5.2.0 e posterior) |
Este tópico descreve como configurar a política na sua fonte do ` OpenAPI `; para obter detalhes sobre como configurar a política na interface de usuário do assembly, consulte GraphQL Execute.
Sobre
A política " graphql-execute executa uma consulta GraphQL usando subconsultas. A política divide a consulta original GraphQL em diferentes subconsultas que podem ser processadas de diferentes maneiras. A política " graphql-execute suporta as seguintes quatro subconsultas diferentes como alvos:
root; contém a consulta GraphQL principal que você deseja invocar no backend.__introspection; contém a consulta de introspecção que pode ser processada localmente no ' DataPower API Gateway sem a necessidade de chamar o backend.__rateLimit; contém a consulta '__rateLimitque especifica os diferentes dados de limite de taxa que você deseja receber.__cost; contém a consulta '__costque especifica os diferentes dados de custo que você deseja receber. Essa consulta deve estar no formato especificado na especificação das Diretrizes de Custo do IBM GraphQL; consulte “Introspeção dos resultados da análise de custos”:__cost.
root, " __rateLimit e " __introspection podem ser executadas em qualquer ordem ou ao mesmo tempo. O alvo ' __cost pode ser executado a qualquer momento se nenhum dado de resposta for esperado. Se forem esperados dados de resposta, o destino " __cost será executado após o destino " root para retornar com precisão os dados corretos de custo de resposta. Depois que todos os alvos são executados, a política " graphql-execute combina todas as respostas. Para permitir que as respostas dos alvos individuais sejam corretamente mescladas entre si em uma única resposta final, a política " graphql-execute deve incluir todos os tipos de introspecção associados a cada nível dos dados de resposta.A política " graphql-execute tem o seguinte formato:
- graphql-execute:
version: version
title: title
description: description
targets:
- execute: []
catch:
- execute: []
otherwise: []
Propriedades
| Propriedade | Obrigatório | Descrição | Tipo de dados |
|---|---|---|---|
| version | True | O número da versão da política. | sequência |
| title | Não | O título da política. | sequência |
| description | Não | Uma descrição da política. | sequência |
| targets | Não | Os alvos para as subconsultas. Os valores válidos são:
|
sequência |
Exemplo
O exemplo a seguir mostra uma política " graphql-execute que inclui todos os alvos disponíveis.
- graphql-execute:
title: GraphQL execute
version: 2.1.0
allowCostIntrospection: false
targets:
- target: root
execute:
- validate:
input: message
version: 2.7.0
validate-against: graphql
description: >-
Validate the GraphQL query and analyze
the expected cost
title: validate & analyze
- ratelimit:
version: 2.4.0
title: ratelimit expected
description: >-
Consume expected cost of query from rate
limits
rate-limit:
- name: graphql-type-cost
operation: consume
- name: graphql-field-cost
operation: consume
burst-limit: []
source: plan-named
- invoke:
cache-ttl: 900
graphql-send-type: detect
parameter-control:
type: allowlist
values: []
http-version: HTTP/1.1
header-control:
type: allowlist
values:
- User-Agent
- X-Client-IP
- X-Global-Transaction-ID
- Content-Type
chunked-uploads: true
verb: keep
stop-on-error:
- ConnectionError
- SOAPError
- OperationError
websocket-upgrade: false
description: Invoke the backend GraphQL server
compression: false
title: graphql-invoke
target-url: >-
https://swapi-graphql.netlify.app/.netlify/functions/index
backend-type: graphql
version: 2.3.0
cache-response: protocol
timeout: 60
- parse:
title: parse
version: 2.0.0
description: >-
Parse the response from the GraphQL
backend server
parse-settings-reference:
default: apic-default-parsesettings
- validate:
input: message
version: 2.7.0
validate-against: graphql
description: >-
Validate the returned JSON and analyze
the real cost
title: validate & analyze
- ratelimit:
version: 2.4.0
title: ratelimit actual
description: >-
Replenish over-estimated cost
(determined from response) to rate
limits
rate-limit:
- name: graphql-type-cost
operation: replenish
- name: graphql-field-cost
operation: replenish
burst-limit: []
source: plan-named
catch:
- execute: []
errors:
- ConnectionError
- target: __introspection
execute:
- ratelimit:
source: plan-named
version: 2.4.0
description: >-
Apply design-time rate limit for
introspection query
title: ratelimit design-time
burst-limit: []
rate-limit:
- operation: consume
name: graphql-design-request
- validate:
input: message
version: 2.7.0
validate-against: graphql
description: >-
Validate the GraphQL query and analyze
the expected cost
title: validate & analyze
- graphql-introspect:
input: message
version: 2.0.0
description: >-
Introspect the GraphQL schema using the
query
title: graphql-introspect
- target: __rateLimit
execute:
- ratelimit:
version: 2.4.0
title: ratelimit design-time
description: >-
Apply design-time rate limit for
ratelimitinfo
rate-limit:
- name: graphql-design-request
operation: consume
burst-limit: []
source: plan-named
- validate:
version: 2.7.0
validate-against: graphql
title: validate & analyze
input: message
description: Validate the GraphQL query
- ratelimitinfo:
version: 2.0.0
title: ratelimitinfo
input: message
- target: __cost
execute:
- ratelimit:
version: 2.4.0
title: ratelimit design-time
description: >-
Apply design-time rate limit for
ratelimitinfo
rate-limit:
- name: graphql-design-request
operation: consume
burst-limit: []
source: plan-named
- validate:
version: 2.7.0
title: validate & analyze
input: message
validate-against: graphql
description: Validate the GraphQL query
- graphql-cost-analysis:
version: 2.0.0
title: graphql cost analysis
input: message
target: graphql_execute_args