Está en la página 1de 34

Using

RESTful Web Services


in
Oracle Application Express (APEX)

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.
Laboratorio práctico: Uso de los servicios web RESTful en Oracle Application Express

Tema Detalles
Visión general En este laboratorio práctico, aprenderá sobre los
servicios web RESTful con actividades de clase
prácticas para permitir que un programa java se conecte
a una base de datos APEX.
Conceptos clave • Configuración del laboratorio de servicios web
RESTful de APEX.
• Recuperación, modificación y supresión de
datos mediante servicios RESTful.
• Creación de una aplicación APEX mediante un
servicio RESTful.
• Consumo del servicio web RESTful creado en
Application Express con un cliente Java.
Dificultad Avanzado
Duración Aproximadamente 180 minutos
Notas Los siguientes laboratorios brindan instrucciones paso a
paso para completar un escenario determinado y cubren
todo, desde temas básicos hasta temas más avanzados.

Acceso a una cuenta APEX es requerido. Para


completar este laboratorio, por favor utiliza Oracle APEX
en Cloud a través de la cuenta del Programa Oracle
Academy Cloud o crea una cuenta en
https://apex.oracle.com. Ser mayor de edad en su país,
es requerido para obtener una de estas cuentas.

La versión 22.2 de Oracle APEX requiere un navegador


habilitado para JavaScript y es compatible con la versión
principal actual y anterior de Google Chrome, Mozilla
Firefox, Apple Safari y Microsoft Edge.

Se recomienda instalar una extensión del explorador que


le permita ver JSON en un explorador web. Extensión
recomendada para Mozilla Firefox: JSON View. Se
necesita una herramienta de prueba de servicios
RESTful Postman se puede descargar de
https://www.getpostman.com/

Los alumnos deben tener conocimientos previos de


cómo crear y ejecutar programas java, así como
experiencia con la escritura y ejecución de sentencias
SQL en APEX.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

2
Introducción
En este tutorial se aborda la creación de un servicio web RESTful de forma declarativa mediante la herramienta SQL Workshop de
Oracle Application Express para conectarse a una tabla de base de datos y, a continuación, consumir el servicio mediante la creación
de una aplicación y la adición de una referencia de servicio web al servicio web RESTful. A continuación, se crea y se ejecuta un
programa java cliente que consumirá el servicio web RESTful para devolver los datos almacenados en una tabla de base de datos
APEX a la aplicación java.

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 típico de servicios web, 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.

Una vez que haya definido un servicio web RESTful, lo podrá llamar con un identificador uniforme de recursos (URI) único. El servicio
web usa el URI para llamar a métodos del tipo GET, POST, PUT y DELETE.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

3
Sección 1

Verificación de la tabla EMP usada en el laboratorio

1. Conéctese al esquema de APEX y haga clic en SQL Workshop.

2. Seleccione Object Browser.

3. Verifique que el esquema incluye la tabla EMP y los datos. Si el contenido ya se ha creado, pase a la siguiente sección.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

4
4. Si la tabla EMP no existe, cree tanto esta como los datos manualmente. Seleccione SQL Commands.

CREATE TABLE "EMP"


( "EMPNO" NUMBER(4,0) NOT NULL ENABLE,
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
PRIMARY KEY ("EMPNO")
)

5. Inserte los siguientes datos en la tabla EMP.

Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values


(7369,'SMITH','CLERK',7902,to_date('17-DEC-80','DD-MON-RR'),800,null,20);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7499,'ALLEN','SALESMAN',7698,to_date('20-FEB-81','DD-MON-RR'),1600,300,30);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7521,'WARD','SALESMAN',7698,to_date('22-FEB-81','DD-MON-RR'),1250,500,30);
Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

5
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7566,'JONES','MANAGER',7839,to_date('02-APR-81','DD-MON-RR'),2975,null,20);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7654,'MARTIN','SALESMAN',7698,to_date('28-SEP-81','DD-MON-RR'),1250,1400,30);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7698,'BLAKE','MANAGER',7839,to_date('01-MAY-81','DD-MON-RR'),2850,null,30);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7782,'CLARK','MANAGER',7839,to_date('09-JUN-81','DD-MON-RR'),2450,null,10);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7788,'SCOTT','ANALYST',7566,to_date('19-APR-87','DD-MON-RR'),3000,null,20);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7839,'KING','PRESIDENT',null,to_date('17-NOV-81','DD-MON-RR'),5000,null,10);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7844,'TURNER','SALESMAN',7698,to_date('08-SEP-81','DD-MON-RR'),1500,0,30);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7876,'ADAMS','CLERK',7788,to_date('23-MAY-87','DD-MON-RR'),1100,null,20);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7900,'JAMES','CLERK',7698,to_date('03-DEC-81','DD-MON-RR'),950,null,30);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7902,'FORD','ANALYST',7566,to_date('03-DEC-81','DD-MON-RR'),3000,null,20);
Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values
(7934,'MILLER','CLERK',7782,to_date('23-JAN-82','DD-MON-RR'),1300,null,10);
commit;

Sección 2

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

6
Servicio web RESTful de Oracle Academy

Configuración del laboratorio

1. Conéctese a Oracle Application Express (APEX).

2. En la página inicial del espacio de trabajo, haga clic en SQL Workshop.

3. Haga clic en RESTful Services. RESTful Services:

4. Haga clic en ORDS Based RESTful Services.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

7
5. Si el esquema no está registrado con ORDS RESTful Data Services, haga clic en Register Schema with ORDS.

6. Cuadro de diálogo ORDS Schema Attributes (Nota: El nombre de su esquema será otro). Haga clic en Save Schema
Attributes.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

8
7. Panel de control de ORDS RESTful Services:

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

9
Sección 3

Creación del primer servicio web Restful

1. El primer servicio web Restful recuperará todos los registros de la tabla EMP. Resalte Modules. Haga clic en el botón Create
Module.

2. Especifique el nombre oa_test en Module Name y /oa_test/ en Base Path. Cambie el tamaño de Pagination Size a 25. Haga
clic en “Create Module”.

3. Haga clic en “Create Template”.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

10
4. Cree la plantilla de recursos empall/.

5. Cree el manejador de recursos. Haga clic en “Create Handler”.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

11
6. Cree el manejador de recursos. Introduzca la siguiente consulta en el área “Source”: SELECT * FROM emp Haga clic en
“Create Handler”.

7. Copie la URL del módulo. Asegúrese de que esté seleccionado el manejador de recursos GET y haga clic en el icono para
copiar la URL.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

12
8. Pruebe el servicio web Rest desde el explorador web.

Pegue la URL en la barra de direcciones del explorador y pulse la tecla Intro para ver el resultado.

9. Seleccione GET, pegue la URL y haga clic en Send para probar el servicio web Rest desde Postman.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

13
Sección 4

Recuperación de datos mediante un parámetro

1. Realice los siguientes pasos para crear un servicio RESTful que recupere la información del empleado en función de un ID de
parámetro con el método HTTP GET.

2. En el módulo oa_test, cree una nueva plantilla emp/:empid siguiendo los pasos que aparecen en la sección anterior.

3. Agregue el código fuente para el manejador GET.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

14
4. Pruebe el nuevo servicio web desde el explorador y agregue un número de empleado válido al final de la URL del esquema.
7839 es el número del empleado “King”.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

15
5. Pruebe el nuevo servicio web desde Postman.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

16
Sección 5

Inserción de datos mediante un servicio RESTful

1. En esta sección, creará un servicio RESTful para insertar los datos con el método HTTP POST. Usará la herramienta
Postman para probar el servicio RESTful y verificar los resultados.
2. En la plantilla empall, cree un nuevo manejador POST.

3. Proporcione el código fuente PL/SQL anónimo al manejador POST.

BEGIN
INSERT INTO emp(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
VALUES (:EMPNO,:ENAME,:JOB,:MGR,TO_DATE(:HIREDATE,'DD-MON-RR'),:SAL,:COMM,:DEPTNO);
htp.prn('employee no ' || :EMPNO || ' added successfully');
end;

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

17
4. En la herramienta Postman, para probar la solicitud POST, tenemos que definir Content-type en application/json. Haga clic en
el separador Headers bajo la barra de la URL. Bajo la cabecera KEY, introduzca Content-Type. Para VALUE, introduzca
application/json.

5. En la herramienta Postman, para probar la solicitud POST, haga clic en el separador Body, marque raw e introduzca el código
json que se muestra a continuación. Haga clic en Send.

{"EMPNO":124, "ENAME":"testinsert", "JOB":"IT_MANA", "MGR":7902, "HIREDATE":"25-JUN-15", "SAL":11, "COMM":22,


"DEPTNO":10}

Si la inserción se realiza correctamente, verá el siguiente mensaje.

Tenga en cuenta que la tabla EMP tiene una estructura diferente a la tabla EMPLOYEES incluida en el script de Oracle
Academy, los tamaños de columna son distintos. La columna “ename” de la tabla EMP tiene un tamaño máximo de 10, por lo
que, si la operación de inserción no se realiza correctamente, asegúrese de que no exceda el número máximo de caracteres
para esta columna.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

18
6. Para comprobar la información del registro nuevo que ha insertado, use el manejador GET creado en la sección anterior, pero
agregue 124 al final de la URL.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

19
Sección 6

Actualización de los datos mediante un servicio RESTful

1. En esta sección, creará un servicio RESTful para actualizar los datos con el método HTTP PUT. Usará la herramienta
Postman para probar el servicio RESTful y verificar los resultados.

2. En la plantilla emp/:empid, cree un nuevo manejador PUT.

3. Especifique el valor PUT en Method y el valor PL/SQL en Source Type. Proporcione el código fuente para PL/SQL.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

20
4. Para realizar la prueba en Postman, seleccione PUT, introduzca la URL correcta y agregue /124, haga clic en el separador
Body, marque raw e introduzca el código json que se muestra a continuación. Haga clic en Send.

Si la actualización se realiza correctamente, verá el siguiente mensaje.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

21
Sección 7

Supresión de datos mediante un servicio RESTful

1. En esta sección, creará un servicio RESTful para suprimir los datos con el método HTTP DELETE. Usará la herramienta
Postman para probar el servicio RESTful y verificar los resultados.

2. En la plantilla emp/:empid, cree un nuevo manejador DELETE.

3. Especifique el valor DELETE en Method y el valor PL/SQL en Source Type. Proporcione el código fuente para PL/SQL.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

22
4. Para realizar la prueba en Postman, haga clic en el icono más para crear un separador nuevo.

5. Seleccione DELETE, introduzca la URL correcta y agregue /124. Haga clic en el separador Params. En KEY, introduzca
Content-Type y en VALUE introduzca application/json (tenga en cuenta que esta información se agregará automáticamente al
final de la URL). Haga clic en Send.

Si la supresión se realiza correctamente, verá el siguiente mensaje.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

23
Sección 8

Creación de una aplicación APEX mediante un servicio RESTful


1. En esta sección, creará una aplicación sencilla con el componente Application Builder de APEX para ver los empleados de la
tabla EMPS. Haga clic en el logotipo de Oracle para ir a la página inicial de APEX y, a continuación, haga clic en App Builder.

2. Cree una aplicación sencilla con la página inicial. Haga clic en Create, Create a New App.

3. Cree la aplicación EMP DISPLAY. Agregue el nombre EMP DISPLAY, acepte el resto de valores por defecto y haga clic en
Create Application.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

24
4. Seleccione Shared Components.

5. En la sección Data Sources, seleccione Web Source Modules.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

25
6. Haga clic en el botón Create, seleccione From scratch y haga clic en Next.

7. Agregue el nombre y la URL del módulo empall que ha creado antes y haga clic en Next.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

26
8. En el siguiente paso se dividirá automáticamente la URL de punto final en una parte específica del servidor y otra específica
del servicio. Haga clic en Next.

9. Para Authentication, seleccione No. Haga clic en Discover.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

27
10. Se mostrarán los empleados de la tabla EMPS. Haga clic en Create Web Source.

11. Para volver a la página inicial de la aplicación, haga clic en el número de aplicación bajo el logotipo de Oracle APEX (su
número de aplicación será otro) y haga clic en el botón Create Page para agregar una nueva página.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

28
12. Haga clic en Report.

13. Seleccione Classic Report.

14. Introduzca el valor 2 en Page Number y el valor EmpDetails en Page Name. Haga clic en Next.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

29
15. Navigation Menu. Seleccione Create a new navigation menu entry, agregue EmpDetails como nombre y seleccione Home en
Parent Navigation Menu Entry. Haga clic en Next.

16. En Data Source, seleccione Web Source y elija el servicio APEX REST EMPALL. Haga clic en Create.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

30
17. Aparece el diseño de página. Haga clic en el número de aplicación para volver a la página inicial de la aplicación.

18. Haga clic en el icono de Run Application.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

31
19. Haga clic en el enlace de la opción de menú EmpDetails.

20. Los empleados de la tabla de base de datos EMP se muestran en la aplicación con el servicio web REST.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

32
Sección 9

Consumo del servicio web RESTful creado en Application Express con un cliente Java

1. Abra el símbolo del sistema.

2. Cree un archivo de origen Java RESTEmp.java para recuperar los detalles del empleado 7782. Asegúrese de cambiar la URL
por la de su propio esquema. También podría crear, compilar y ejecutar el archivo java en un IDE como Eclipse o Netbeans.
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class RestMain {

public static void main(String[] args) {


// TODO Auto-generated method stub
connectRest();
}

public static void connectRest() {


try {
//******* Introduzca la URL de su propio esquema ******
String uri = "https://apex.oracle.com/pls/apex/oa/oa_test/emp/7782";
URL url = new URL(uri);
HttpURLConnection connection
= (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
readEmp(connection);
} catch (Exception e) {
System.out.println("No se ha podido establecer la conexión");
}
}

public static void readEmp(HttpURLConnection connection) {


Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

33
try {
InputStream json = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(json);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb);
} catch (Exception e) {
System.out.println("No se puede leer el objeto json");
}
}

3. Compile el archivo RESTEmp.java.

4. Ejecute la clase RESTEmp para que se muestren los datos del empleado 7782.

Enhorabuena. Ha completado correctamente el laboratorio Uso de los servicios web RESTful en Application Express.

Copyright © 2020, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas comerciales de sus
respectivos propietarios.

34

También podría gustarte