Accediendo a bases de datos remotas usando REST Enabled SQL en

Oracle APEX

Angel Flores Torres

  • Ingeniero de Aplicaciones Oracle APEX
  • Arequipa - Perú

Angel Flores Torres

  • Ingeniero de Sistemas
  • Arequipa - Perú
  • Consultor para Insum Solutions
  • Desarrollo aplicaciones Oracle APEX desde el 2016
  • Oracle Application Express 18: Developer Certified Professional
  • Oracle ACE Associate

 

 

  1. Arquitectura / Diferencia REST Enabled SQL y RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

Agenda

  1. Arquitectura / Diferencia REST Enabled SQL y RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

Arquitectura ORDS

Fuente: http://www.peoug.org/wp-content/uploads/2018/09/MarcSewtz-apex_181_rest.pdf

Diferencia REST Enabled SQL y RESTful Services

Fuente: http://dermotoneill.blogspot.com/2017/09/new-rest-enabled-sql-for-ords.html

APEX 5.2+

ORDS 17.4+

  1. Arquitectura / Diferencia REST Enabled SQL y RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

Requerimientos

a) Instancia de APEX

  • Java JDK
  • ORDS
  • REST Enabled Schema
  • Modo Standalone o Tomcat

b) Base de Datos con:

  1. Arquitectura / Diferencia REST Enabled SQL y  RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

Instalación de ORDS

  1. Descarga ORDS
  2. Descomprimir, ubicarse en el directorio
  3. Install

  4. Desinstalar

C:\MyPc\ords_20_4>java -jar ords.war install
C:\MyPc\ords_20_4>java -jar ords.war uninstall

Instalación de ORDS

Demo

Instalación de ORDS en Tomcat

En caso se usar Tomcat

Modificar el archivo de defaults ubicado en: ...ords_config/ords/defaults.xml

 

agregar /modificar la entrada de REST Enable SQL a true

 

 

 

Si estamos usando HTTP (Ambiente de confianza/demo),  podríamos desactivar SSL

<entry key="restEnabledSql.active">true</entry>
<entry key="security.verifySSL">false</entry>
  1. Arquitectura / Diferencia REST Enabled SQL y RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

Configuración schema REST

* Usando SQL Developer                * SQL statement

Text

Test Postman

Demo

BEGIN

  ORDS.enable_schema(
    p_enabled             => TRUE,
    p_schema              => 'HR_EMP',
    p_url_mapping_type    => 'BASE_PATH',
    p_url_mapping_pattern => 'employees',
    p_auto_rest_auth      => FALSE
  );
  COMMIT;
END;

* Creando schema, tabla, permisos

  1. Arquitectura / Diferencia REST Enabled SQL y    RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle -    Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

APEX - Creación y uso del Servicio

REST Enabled SQL

Demo

  1. Arquitectura / Diferencia REST Enabled SQL y RESTful Services

  2. Requerimientos

  3. Instalación de ORDS en una base de datos Oracle - Que no tiene instalado APEX

  4. Configuración schema REST - Destino

  5. APEX - Creación y uso del Servicio REST Enabled SQL

  6. Bonus

Agenda

  • apex_web_service.make_rest_request

    • insertando datos

    • creando procedure

  • Postman

Bonus

declare
  l_response clob;
begin
  apex_web_service.g_request_headers(1).name := 'Content-Type';
  apex_web_service.g_request_headers(1).value := 'application/sql';

  l_response := apex_web_service.make_rest_request (
        p_url => 'http://192.168.101.220:8080/ords/employees/_/sql'
      , p_http_method => 'POST'
      , p_body        => 'select sysdate from dual'      
      , p_username    => 'hr_emp'
      , p_password    => 'hr_emp' 
  );
  dbms_output.put_line(l_response);
end;

Postman

192.168.101.220:8080/ords/employees/_/sql

Demo

Postman - Commit?

--simple insert
insert into EMP (EMPNO,ENAME,JOB) values (1,'OFFICE HOURS','ORACLE');

-- -- forzando error / commit implicito
insert into EMP (EMPNO,ENAME,JOB) values (1,'OFFICE HOURS 2','ORACLE');
insert into EMP (EMPNO,ENAME,JOB) values (2,'OFFICE HOURS 3','ORACLE');


-- forzando error
begin
  insert into EMP (EMPNO,ENAME,JOB) values (1,'OFFICE HOURS 1','ORACLE');
  insert into EMP (EMPNO,ENAME,JOB) values (3,'OFFICE HOURS 3','ORACLE');
end;

Demo

Referencias

Presentación

Made with Slides.com