Solo pasarela de API de DataPower

Creación de una API de proxy GraphQL

GraphQL es un lenguaje de consulta para APIs que proporciona al cliente de aplicaciones un mayor control sobre los datos que recupera en una solicitud de API en comparación con una solicitud de API REST. IBM® API Connect le permite crear una definición de proxy de API de GraphQL que actúa como proxy de un servidor GraphQL de fondo y definir controles de limitación de velocidad que reflejen la cantidad de datos que devuelve el servidor una solicitud a la API GraphQL .

Acerca de esta tarea

Puede completar esta tarea utilizando la aplicación de interfaz de usuario de API Designer o utilizando la interfaz de usuario de API Manager basada en navegador.

Para realizar esta tarea, debe tener asignado un rol que tenga los permisos Api-Drafts:Edit, Settings:View y App:View. El rol de desarrollador presuministrado tiene estos permisos de forma predeterminada; si se le asigna un rol personalizado, debe tener estos permisos. Para obtener más información, consulte Creación de roles personalizados.

GraphQL proporciona las siguientes ventajas sobre las API REST:

  • El cliente de aplicaciones sólo puede solicitar los datos que necesita. Por ejemplo, al recuperar registros de cuentas bancarias, solicite sólo el número de cuenta y el saldo actual para cada cuenta, pero no los detalles de nombre de cliente y dirección. Con una solicitud de API REST, el servicio REST de fondo debe proporcionar puntos finales separados para diferentes subconjuntos de datos, o el cliente de aplicaciones debe recuperar los registros completos y, a continuación, descartar los datos no deseados.
  • El cliente de aplicaciones puede recuperar varios recursos relacionados en una única solicitud. Por ejemplo, el registro de cuenta bancaria de un cliente podría incluir una matriz que hiciera referencia a otros productos financieros del cliente. Si un cliente de aplicaciones desea recuperar los detalles de cuenta bancaria para un cliente específico y detalles de los otros productos financieros para dicho cliente, con una API REST el cliente recuperaría primero los detalles de la cuenta bancaria y, a continuación, efectuaría solicitudes separadas para cada uno de los demás productos. Se puede diseñar una API GraphQL para permitir que el cliente recupere toda esta información en una única solicitud.

Sin embargo, esta flexibilidad presenta desafíos de limitación de velocidad, porque dos solicitudes aparentemente muy similares podrían devolver cantidades muy diferentes de datos, y lo que podría haber requerido varias solicitudes de API REST, cada una de ellas contabilizada con respecto al límite de velocidad, podría requerir sólo una única solicitud de API GraphQL. Por tanto, es importante que se impongan controles de limitación de velocidad que reflejen la cantidad de datos que se recuperan. API Connect amplía el estándar GraphQL proporcionando, en una definición de API GraphQL , la capacidad de configurar un rango de valores que se utilizan para calcular la complejidad de una solicitud GraphQL y un coste asociado que cuenta para el límite de velocidad.

Procedimiento

Para crear una definición de proxy de API GraphQL, siga estos pasos:

  1. En el panel de navegación, haga clic en Icono de desarrollo en el panel de navegación de la interfaz de usuario de la API Develop y, a continuación, en Add > API.
    Se visualizará la pantalla Seleccionar tipo de API.
  2. Seleccione OpenAPI 2.0.
  3. Seleccione Desde el servicio GraphQL existente (proxyGraphQL ).
  4. Pulse Siguiente. Especifique el resumen de API en la sección Información. Puede ajustar la API después de crearla.
    • El Título puede incluir caracteres especiales, pero debe ser corto para que se pueda visualizar fácilmente en la interfaz de usuario.
    • El Nombre se especifica automáticamente. El valor del campo Nombre es una serie única que se utiliza para identificar la API en los mandatos de CLI developer toolkit . Para ver los comandos de la CLI para gestionar los borradores de API, consulte la documentación de referencia de la CLI del kit de herramientas.
    • La Versión corresponde al valor de la propiedad info.version de la definición OpenAPI de la API. Se recomienda el esquema de numeración de versión de version.release.modification ; por ejemplo, 1.0.0.
    • La Vía de acceso base es el segmento de URL de la API y no incluye el nombre de host ni ningún segmento adicional para vías de acceso u operaciones. La vía de acceso base no puede incluir caracteres especiales y debe empezar por un carácter / aunque esté vacía.
    • La Descripción opcional ayuda a identificar la API.
  5. En la sección GraphQL Server , especifique los valores siguientes:
    • URL de servidor de GraphQL: es el URL que se utiliza para las solicitudes a la API GraphQL de fondo. El esquema de GraphQL se importa automáticamente desde el URL especificado.
    • Nombre de esquema: el nombre que especifique aquí se utilizará para identificar la definición de esquema que se crea a partir del esquema de GraphQL importado. El campo se rellena previamente con el segmento de nombre de host del valor especificado en el campo URL de servidor de GraphQL, pero se puede cambiar.
  6. Pulse Siguiente. Si se indican avisos relacionados con el esquema importado, puede revisarlos ahora pulsando Ver.
    Puede gestionar estos avisos según proceda después de haber creado la API de proxy de GraphQL.
  7. En la sección Operaciones y vías de acceso , seleccione las operaciones y vías de acceso que desea incluir.

    La vía de acceso de operación de /graphql ya está seleccionada y no puede cambiar este valor; esta es la vía de acceso para las solicitudes de cliente de aplicaciones a API Connect que invocan la API GraphQL .

    Para obtener más información sobre los mecanismos admitidos para enviar una solicitud al punto final /graphql/cost, consulte Mecanismos de solicitud admitidos por los puntos finales GraphQL.

    También puede seleccionar la vía de acceso de operación graphql/cost; esta vía de acceso permite a los clientes de aplicaciones obtener detalles del coste de una solicitud a la API GraphQL antes de realizar la solicitud real. En un entorno de producción, en particular, debe considerar cuidadosamente las implicaciones que tendrá sobre los recursos hacer que esta ruta esté disponible. Para más detalles sobre la habilitación del punto final de costes, consulte Habilitación del punto final de costes para una API GraphQL .

    Para formar las vías de acceso de API completas, estos segmentos de vía de acceso se añaden al basepath que ha especificado en el paso 4.

    Para permitir que los clientes de aplicaciones envíen solicitudes de introspección para esta API de proxy de GraphQL, seleccione Admitir introspección predeterminada. Para más detalles, consulte Soporte de introspección para una API GraphQL.

    Para permitir a los usuarios probar la API de proxy de GraphQL desde un editor GraphiQL, seleccione Habilitar editor GraphiQL. Para más detalles, consulte Activación del editor GraphiQL para una API GraphQL.

    Nota: Las opciones graphql/cost, Support default introspectiony Enable GraphiQL editor generan automáticamente la configuración de políticas en el ensamblaje de API que se tendría que crear manualmente si inhabilita esta opción y posteriormente decide que es necesaria.
  8. De forma opcional, puede sustituir el esquema de GraphQL que se ha importado desde el URL de servidor de GraphQL cargando un esquema desde el sistema de archivos local. Pulse Sustituir; a continuación, puede arrastrar y soltar el archivo, o pulsar donde se indica para seleccionar el archivo del sistema de archivos local. Pulse Cargar cuando haya terminado.
    Nota:
    • El esquema debe escribirse en el lenguaje de definición de esquema (SDL) de GraphQL. Para más información, consulte el lenguaje Type en la documentación GraphQL en https://graphql.org/
    • Si carga un esquema de un archivo local habiendo cargado anteriormente un esquema de un URL, el valor de URL de esquema que se almacena en el origen de OpenAPI de la API, y que se visualiza posteriormente en la interfaz de usuario, conservará el valor de URL especificado anteriormente en lugar de indicar una ubicación de archivo.
  9. Pulse Siguiente. En la sección Proteger, configure la seguridad de la API que necesita.
    • Proteger mediante ID de cliente : seleccione esta opción para exigir que una aplicación proporcione un ID de cliente (Clave de API). Esto hace que el parámetro X-IBM-Client-Id se incluya en la cabecera de solicitud para la API.
    • CORS - Seleccione esta opción para habilitar el soporte de uso compartido de recursos de diversos orígenes (CORS) para la API. Esto permite que se pueda acceder a la API desde otro dominio.
      Nota:
      • El soporte de CORS sólo está disponible en DataPower® API Gateway.
      • Cuando CORS está habilitado, la pasarela de API ejecuta la política de preflujo cors para manejar todas las solicitudes CORS efectuadas a la API.
      • Cuando CORS está habilitado y se recibe una solicitud de verificación, sólo se realizan las siguientes acciones de API:
        • La política de preflujo cors configura las cabeceras de respuesta adecuadas.
        • Se establecen las cabeceras de respuesta.
      • Cuando se recibe una solicitud de verificación, el indicador request.attributes.isCORSPreflight se establece en true.
      • Para todas las solicitudes de verificación, las políticas de preflujo security y client-identification siempre se pasan por alto, independientemente de si CORS está habilitado.
  10. Opcional: Seleccione Activar API si desea utilizar inmediatamente la API para un mayor desarrollo y pruebas.
    Nota:
    • Cuando selecciona la opción Activar API , API Connect realiza automáticamente las acciones siguientes:
      • Crea un borrador de producto, añade la API al producto y publica el producto en el catálogo de recinto de pruebas para que la API esté disponible para llamadas. El producto tiene el título título_api auto product. Este producto no es visible en la vista Desarrollar y no puede suprimirlo directamente. Sin embargo, si elimina la API, el proyecto de producto se elimina junto con la API; consulte Eliminar una definición de API. El producto es visible en cualquier catálogo en el que se haya publicado. Si desea eliminar el producto de un catálogo, debe hacerlo por separado; consulte Eliminar un producto de un catálogo
      • Suscribe la aplicación de prueba de recinto de pruebas al producto de forma que pueda probar inmediatamente la API en el entorno de prueba. Para obtener información sobre cómo probar una API, consulte Prueba de una API.
    • No puede utilizar la opción Activar API si la aprobación del ciclo de vida está activada en el catálogo Sandbox para las acciones Stage, Publicar o Sustituir. Si alguna de estas aprobaciones del ciclo de vida está activada, para poder utilizar la opción Activar API deberá desactivarse; para obtener información sobre la configuración de la aprobación del ciclo de vida, consulte Creación y configuración de catálogos.
    • Para utilizar la opción Activar API , debe tener asignado un rol que tenga los permisos Product:Manage y Subscription:Manage . El rol de desarrollador presuministrado tiene estos permisos de forma predeterminada; si se le asigna un rol personalizado, debe tener estos permisos. Para obtener más información, consulte Creación de roles personalizados.
  11. Pulse Siguiente para crear la definición de API.

    El panel Resumen muestra mensajes a medida que se crea la definición y se aplican las opciones de seguridad seleccionados.

    Si ha seleccionado Activar API, el asistente rellena una URL punto final de API que puede utilizar en las pruebas. Si también ha seleccionado Proteger mediante ID de cliente, el asistente muestra un ID de cliente y un secreto de cliente que puede utilizar.

  12. Pulse Siguiente para crear la definición de API.

    El panel Resumen muestra mensajes a medida que se crea la definición y se aplican las opciones de seguridad y los límites de velocidad seleccionados.

  13. Seleccione una de las siguientes opciones:
    • Para configurar la API con mayor detalle, pulse Editar API. Para obtener detalles, consulte Edición de una definición de API.
    • Si no desea seguir configurando la API en este momento, pulse el enlace Desarrollar de la indicación de ruta para volver a la página de bienvenida; a continuación, puede pasar inmediatamente a otra tarea. Para obtener detalles sobre cómo configurar la API más adelante, consulte Edición de una definición de API.

Qué hacer a continuación

Utilice GraphQL editor de esquemas para revisar y tratar cualquier advertencia asociada con el esquema, y para configurar una serie de parámetros que se utilizan para calcular la complejidad de una solicitud de GraphQL, y un coste asociado que cuenta para el límite de tarifa; para más detalles, consulte Utilización del editor de esquemas GraphQL .