Uso de servicios web con Oracle APEX

You can interact with both SOAP and RESTful style web services from Oracle APEX in your Autonomous Database instance.

Los servicios web permiten a las aplicaciones interactuar entre sí en la web en un entorno independiente del lenguaje y de la plataforma. En un escenario de servicios web típico, una aplicación empresarial envía una solicitud a un servicio en una URL determinada mediante el protocolo HTTP. El servicio recibe la solicitud, la procesa y devuelve una respuesta. Los servicios web suelen basarse en arquitecturas de protocolo simple de acceso a objetos (SOAP) o Representational State Transfer (REST).

Mediante orígenes de datos REST (anteriormente denominados módulos de origen web), los desarrolladores de APEX pueden acceder de forma declarativa a los servicios de datos desde distintos puntos finales REST, lo que les permite realizar tanto operaciones de lectura como de escritura. Además de soportar reglas de almacenamiento en caché inteligentes para datos de REST remotos, Oracle APEX también ofrece la capacidad única de manipular directamente los resultados de los orígenes de datos REST mediante SQL estándar del sector.

El paquete APEX_WEB_SERVICE permite integrar otros sistemas con APEX mediante la interacción con servicios web en cualquier lugar donde pueda utilizar PL/SQL en la aplicación. El paquete contiene procedimientos y funciones para llamar a los servicios web de estilo SOAP y RESTful, y para simplificar la implantación de flujos de OAuth 2.0.

Tenga en cuenta lo siguiente al trabajar con servicios web en APEX con Autonomous Database:

  • Todos los servicios web deben estar protegidos. Solo están soportados los servicios HTTPS en el puerto por defecto (443). Las conexiones mediante direcciones IP no están permitidas. La instancia de APEX está preconfigurada con una instancia de Oracle Wallet que contiene más de 90 certificados SSL intermedios y de raíz de confianza de los más habituales. El paquete APEX_WEB_SERVICE utiliza automáticamente esta instancia de Oracle Wallet sin ninguna configuración adicional de los desarrolladores de aplicaciones.

  • Cada instancia de Autonomous Database está configurada con una lista de control de acceso de red (ACL) para permitir llamadas de servicio web salientes desde Oracle APEX a puntos finales públicos.

  • Para llegar a los puntos finales de subredes privadas o detrás de firewalls locales, asegúrese de que cumplen los requisitos de esta sección, Envío de una solicitud HTTP a un host privado con UTL_HTTP y agregue la siguiente lista de control de acceso para el host deseado:

    BEGIN
       DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
           host => 'www.example.com',
           ace => XS$ACE_TYPE( 
               privilege_list => XS$NAME_LIST('http'),
               principal_name => APEX_APPLICATION.g_flow_schema_owner,
               principal_type => XS_ACL.ptype_db),
           private_target => true);
    END;
    /
    Nota

    Si define la propiedad de la base de datos ROUTE_OUTBOUND_CONNECTIONS en PRIVATE_ENDPOINT, no necesita definir listas de control de acceso para hosts individuales para acceder a ellos desde APEX. Seguridad mejorada para conexiones de salida con puntos finales privados
  • La instancia de APEX no necesita un proxy web de salida. Si se intenta utilizar un proxy web en el nivel de llamada de API o de aplicación, se muestra el error: ORA-01031: insufficient privileges.

  • Existe un límite por defecto de 50 000 solicitudes de servicio web de salida por espacio de trabajo de APEX en un período continuo de 24 horas. Si se alcanza el límite de llamadas de servicio web de salida, se emite la siguiente excepción SQL en la solicitud posterior y se bloquea la solicitud:

    ORA-20001: You have exceeded the maximum number of web service requests per workspace. Please contact your administrator.

    Puede aumentar o eliminar el límite por defecto de solicitudes de servicio web de salida. Para ello, defina un valor para el parámetro de instancia MAX_WEBSERVICE_REQUESTS o actualice el atributo Máximo de solicitudes de servicio web en Servicios de administración de APEX. Por ejemplo, para cambiar el límite a 250 000, conecte a la base de datos database como ADMIN mediante un cliente SQL y ejecute lo siguiente:

    BEGIN
        APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000');
        COMMIT;
    END;
    /

Para obtener más información, consulte: