graphql-execute
Utilizzare il criterio 'graphql-execute per eseguire una query GraphQL utilizzando le sottoquery.
Supporto gateway
| Gateway | Versione della politica |
|---|---|
| DataPower® API Gateway | 2.2.0.0DataPower API Gateway versione 10.0.4.0 e successive) 2.2.1.0DataPower API Gateway versione 10.5.2.0 e successive) |
In questa sezione viene descritto come configurare il criterio nella fonte " OpenAPI "; per ulteriori dettagli su come configurare il criterio nell'interfaccia utente di Assembly, consultare GraphQL Execute.
Informazioni su
Il criterio 'graphql-execute esegue una query GraphQL utilizzando delle sottoquery. Il criterio divide la query GraphQL originale in diverse sotto-query che possono essere elaborate in modi diversi. Il criterio 'graphql-execute supporta le seguenti quattro diverse sotto-query come target:
root; contiene la query GraphQL principale che si vuole invocare nel backend.__introspection; contiene la query di introspezione che può essere elaborata localmente su 'DataPower API Gateway senza dover invocare il backend.__rateLimit; contiene la query '__rateLimitche specifica i diversi dati di limite di velocità che si desidera ricevere.__cost; contiene la query '__costche specifica i diversi dati di costo che si desidera ricevere. Questa query deve rispettare il formato specificato nella specifica " IBM " ( GraphQL ) relativa alle direttive sui costi; si veda "Introspection of Cost Analysis Results":__cost.
root, " __rateLimit e " __introspection possono essere eseguiti in qualsiasi ordine o contemporaneamente. Il target '__cost può essere eseguito in qualsiasi momento se non sono previsti dati di risposta. Se sono previsti dati di risposta, il target '__cost viene eseguito dopo il target 'root per restituire con precisione i dati corretti sul costo della risposta. Dopo l'esecuzione di tutti gli obiettivi, il criterio " graphql-execute combina insieme tutte le risposte. Per consentire la corretta fusione delle risposte dei singoli target in un'unica risposta finale, la politica " graphql-execute deve includere tutti i tipi di introspezione associati a ciascun livello dei dati di risposta.Il criterio " graphql-execute ha il seguente formato:
- graphql-execute:
version: version
title: title
description: description
targets:
- execute: []
catch:
- execute: []
otherwise: []
Proprietà
| Proprietà | Obbligatorio | Descrizione | Tipo di dati |
|---|---|---|---|
| version | Vero | Il numero di versione del criterio. | stringa |
| title | N | Il titolo della polizza. | stringa |
| description | N | Una descrizione della politica. | stringa |
| targets | N | Gli obiettivi delle sotto-query. I valori validi sono:
|
stringa |
Esempio
L'esempio seguente mostra un criterio " graphql-execute che include tutti i target disponibili.
- 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