Personalización de las políticas de preflujo

De forma predeterminada, siempre que se llama a una API, se invoca una serie de políticas, denominadas políticas de preflujo, antes del conjunto de políticas configurado en la definición de API. Sin embargo, mediante el uso de una política global que puede, si es necesario, personalizar completamente el comportamiento de estas políticas, controlando si y cuando se invocan, y con qué personalización.

Antes de empezar

Políticas de preflujo predeterminadas

Las siguientes políticas de preflujo se invocan de forma predeterminada:

  • cors: maneja las solicitudes de uso compartido de recursos de origen cruzado (CORS) para la API; se invoca si CORS está habilitado en los valores de definición de API.
  • wsdl: maneja solicitudes WSDL.
  • html-page: para una API GraphQL , si la opción de editor GraphQL está habilitada, devuelve la página HTML GraphQL .
  • client-identification: examina las credenciales de clave de API transportadas en la solicitud de API y compara el plan de API a través del cual la API de destino se pone a disposición del cliente.
  • ratelimit: aplica el esquema de límite de velocidad que está configurado para el plan de API coincidente. Cuando se alcanza el límite de velocidad, la solicitud se rechaza.
  • security: realiza las comprobaciones de autenticación y autorización necesarias para la API de destino y la operación. Si no se cumple el requisito de seguridad, la solicitud se rechaza.

Configuración de una política global para personalizar las políticas de preflujo

Para personalizar las políticas de preflujo, siga estos pasos:

  1. Añada la propiedad siguiente a la sección info: del archivo .yaml de política global:
    mode: mode_type
    Donde mode_type es una de las opciones siguientes:
    • after-builtin -esto significa que las políticas de preflujo se aplican después de las políticas de preflujo predeterminadas.
    • before-builtin -esto significa que las políticas de preflujo se aplican antes que las políticas de preflujo predeterminadas.
    • full-custom -esto significa que debe añadir explícitamente las políticas de preflujo al ensamblaje de la política global. Sin embargo, puede eliminar, reposicionar o sustituir cualquiera de las políticas de preflujo según sea necesario.
  2. Configure las políticas en el ensamblaje de políticas global según sea necesario.
    Ejemplo de política global de after-builtin :
    global-policy: 1.0.0
    info:
      name: foo-example
      title: foo-example
      version: 2.0.0
      mode: after-builtin
    gateways:
      - datapower-api-gateway
    assembly:
      execute:
        - set-variable:
            version: 2.0.0
            title: set-variable
            actions:
              - set: message.headers.X-Flexible-Preflow
                value: 'Hello reboot global policy 1 on catalog 1 this policy will be executed after all default builtins'
                type: string
    Ejemplo de política global de before-builtin :
    global-policy: 1.0.0
    info:
      name: foo-example
      title: foo-example
      version: 2.0.0
      mode: before-builtin
    gateways:
      - datapower-api-gateway
    assembly:
      execute:
        - set-variable:
            version: 2.0.0
            title: set-variable
            actions:
              - set: message.headers.X-Flexible-Preflow
                value: 'Hello reboot global policy 1 on catalog 1 this policy will be executed before all default builtin policies'
                type: string
    Ejemplo de política global de full-custom :
    global-policy: 1.0.0
    info:
      name: preflow-4-actions
      title: preflow-4-actions
      version: 2.0.0
      mode: full-custom
    gateways:
      - datapower-api-gateway
    assembly:
      execute:
        - cors:
            version: 2.0.0
            title: cors-in-preflow
        - wsdl:
            title: default-wsdl
        - html-page:
            title: html-page-in-preflow
            output: message
            version: 2.0.0
        - helloworld:
            version: 1.0.0
            title: helloworld
        - client-identification:
            version: 2.0.0
            title: ci-in-preflow
        - ratelimit:
            version: 2.0.0
            title: assembly-rt-in-preflow
            source: plan-default
        - security:
            version: 2.0.0
            title: sec-in-preflow
        - set-variable:
            version: 2.0.0
            title: set-variable
            actions:
              - set: message.headers.X-Flexible-Preflow
                value: 'Hello reboot with 4 actions'
                type: string
  3. Despliegue la política global como una política global previa a la solicitud.