Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
La política de GraphQL puede analizar las cargas útiles de las solicitudes de GraphQL en variables de flujo de mensajes, verificar la solicitud con un esquema de GraphQL o ambas cosas.
La política de GraphQL puede analizar cargas útiles de GraphQL en variables de flujo de mensajes, verificar solicitudes de GraphQL con un esquema o ambas cosas.
Puedes usar la política de GraphQL para lo siguiente:
- Asegúrate de que tus APIs solo procesen solicitudes que se ajusten al esquema que proporciones.
- Imponer restricciones en la carga útil definiendo un máximo en el número de fragmentos permitidos.
- Asocia GraphQL con productos de API.
- Aprovecha las funciones de las políticas Oauth2, VerifyAPIKey y Quota, al igual que en REST.
GraphQL admite los siguientes tipos de cargas útiles:
- POST de cargas útiles de GraphQL con
Content-Type : application/graphql
- POST de cargas útiles de GraphQL con
Content-Type: applcation/json
- GET de cargas útiles de GraphQL en las que la carga útil es un parámetro de consulta
Para ver un resumen rápido de las opciones de la política de GraphQL, consulta las opciones de GraphQL que se indican más abajo.
Para obtener más información sobre GraphQL, consulta GraphQL.org.
Ejemplo
En el siguiente ejemplo se muestra cómo subir un esquema GraphQL a Apigee y usarlo para validar solicitudes con contenido GraphQL.
Crear un archivo de esquema
Para ejecutar el ejemplo, primero crea un archivo de esquema GraphQL con el siguiente contenido:
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! }
Guarda el archivo con el nombre que quieras y la extensión .graphql
.
Añadir la política de GraphQL en la interfaz de usuario de Apigee
Nuevo editor de proxies
Primero, crea la política de GraphQL de la siguiente manera:
- Inicia sesión en la interfaz de usuario de Apigee.
- En la barra de navegación, selecciona Desarrollar > Proxies de API.
- En la lista de proxies, selecciona el proxy de API en el que quieras usar la política de GraphQL.
- Haz clic en la pestaña DESARROLLO.
- En el panel de la izquierda, haga clic en el botón + situado junto a la carpeta Políticas.
En el cuadro de diálogo Crear política, haz clic en el campo Seleccionar tipo de política, desplázate hacia abajo hasta Mediación y selecciona GraphQL.
Introduce un Nombre visible y un Nombre.
A continuación, selecciona un archivo de esquema GraphQL de la siguiente manera:
- Haz clic en el campo Archivo de esquema. Se mostrarán las siguientes opciones:
- Sin esquema. Si selecciona esta opción, Apigee no usará un esquema para validar las solicitudes.
- Importar un esquema de GraphQL (.graphql)
Selecciona Importar esquema de GraphQL (.graphql). Se muestra lo siguiente:
Haz clic en Elegir archivo y selecciona el archivo de esquema que has creado anteriormente (debe tener la extensión
.graphql
). El archivo aparece en el campo Nombre del esquema.
- Haz clic en el campo Archivo de esquema. Se mostrarán las siguientes opciones:
- Haz clic en Crear para crear la política.
Ahora que has creado la política GraphQL, puedes adjuntarla a un paso de PreFlow:
- En el panel de la izquierda, selecciona Proxy Endpoints > default > PreFlow:
- En el panel Respuesta, situado en la parte inferior derecha del editor visual, haz clic en el botón + situado junto a PreFlow:
- En el cuadro de diálogo Añadir política, selecciona la política GQL-.
- Haga clic en Añadir para adjuntar la política.
- Haz clic en Guardar para guardar la revisión actual con los cambios.
- Para implementar los cambios, haz clic en la pestaña Resumen y selecciona Implementar.
Consulta las opciones de GraphQL que puedes definir para la política de GraphQL.
Editor de proxies clásico
- Inicia sesión en la interfaz de usuario de Apigee.
- En la barra de navegación, selecciona Desarrollar > Proxies de API.
- En la lista de proxies, selecciona el proxy de API en el que quieras usar la política de GraphQL.
- Haz clic en la pestaña DESARROLLO.
En el panel Flujo: PreFlow, haga clic en el botón + Paso.
En el panel Añadir paso, desplázate hasta la parte inferior de la sección Mediación y selecciona GraphQL.
En el panel Añadir paso se muestran las siguientes opciones:
- Nombre visible: nombre visible de la política.
- Nombre: nombre interno de la política.
- Archivo de esquema: opción para subir un archivo que contenga un esquema de GraphQL que Apigee usará para validar las solicitudes con contenido de GraphQL.
Para usar un esquema, sigue estos pasos:
- Haz clic en el campo Archivo de esquema. Se mostrarán las siguientes opciones:
- Sin esquema. Si selecciona esta opción, Apigee no usará un esquema para validar las solicitudes.
- Importar un esquema de GraphQL (.graphql)
Selecciona Importar esquema de GraphQL (.graphql). Se muestra lo siguiente:
Haz clic en Elegir archivo y selecciona el archivo de esquema que creaste anteriormente (debe tener la extensión
.graphql
). El archivo aparecerá en el campo Nombre del esquema.
Haz clic en Añadir. El panel Flujo: PreFlow ahora aparece como se muestra a continuación:
Consulta las opciones de GraphQL que puedes definir para la política de GraphQL. En este ejemplo, déjalos como están.
Para implementar tu proxy, haz clic en la pestaña Vista general y selecciona Implementar.
Ahora puedes probar la política de GraphQL con el siguiente comando curl
:
curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query query_name {allPersons {name}}' -k
Donde PROXY_BASEPATH es la ruta base del proxy y HOST_NAME es el nombre del proxy, incluido el número de revisión más reciente. Cuando ejecutas el comando, Apigee valida la solicitud con el esquema y devuelve el siguiente resultado.
{ "query query_name {allPersons {name}}": "", "id": 101 }
Aquí tienes otro ejemplo de solicitud:
curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query ilovegql {DEADBEEF}' -k
Esta vez, la validación de la solicitud falla y se muestra el siguiente mensaje de error.
{"fault":{"faultstring":"steps.graphQL.SchemaValidationFailed","detail":{"errorcode":"steps.graphQL.SchemaValidationFailed"}}}
Opciones de GraphQL
GraphPolicy tiene las siguientes opciones:
OperationType
: el tipo de operación. Las opciones son las siguientes:query
: el equivalente de GraphQL de la operaciónGET
de REST.mutation
: el equivalente de GraphQL de la operaciónPUT
de REST.query_mutation
: tantoquery
comomutation
.
MaxDepth
: la profundidad máxima de la consulta, cuando se representa como un árbol.MaxDepth
te permite bloquear consultas profundas en la carga útil, de modo que Apigee no tenga que crear variables de flujo muy grandes para contener los valores. Sin embargo, la carga útil se envía tal cual, independientemente del valor deMaxDepth
.MaxCount
: el número máximo de fragmentos que puede haber en la carga útil. Puedes usarlo para evitar que el servidor backend de GraphQL del cliente ejecute consultas muy complejas, lo que obliga a los clientes a dividir su lógica en cargas útiles más pequeñas.Action
: una de las siguientes acciones de GraphQL:parse
Apigee analiza la carga útil de GraphQL en las variables de flujo. A continuación, puede usar el contenido de las variables de flujo en políticas como JavaCallout. Ten en cuenta queparse
también verifica la carga útil.verify
: Apigee verifica que la carga útil de GraphQL se ajusta al esquema subido al proxy. Puedes usarverify
para asegurarte de que no recibes solicitudes que no se ajusten a tu esquema. De esta forma, se puede ahorrar tiempo de CPU valioso en el backend.parse_verify
: analiza y verifica la carga útil.
ResourceURL
: ruta al archivo de esquema GraphQL que usa Apigee para verificar la solicitud GraphQL.`
Para obtener más información sobre estas opciones, consulta la página de referencia de la política de GraphQL.