Apex · Oracle · ORDS · REST

Oracle APEX usar RESTful Data Services, URL Template con 2 o más parámetros

En este blog veremos cómo crear un RESTful Services para llamarlo con 2 o más parámetros en el URL.

Veremos dos formas para ello:

Quiero aclarar que estos ejemplos son muy sencillos para usarlos quizá en demos básicas, si necesitamos filtrar de forma más compleja lo recomendable seria usar los parámetros como querys. Tambien en este blog no se incluye seguridad.

Tambien usaremos el software [PostMan][PostMan] para completar las pruebas. [PostMan]: https://www.postman.com/

Esto lo haremos a través del menú SQL Workshop > RESTful Data Services, y usaremos la tabla de empleados.

Primero un ejemplo básico es tener una llamada REST con solo un parámetros, ejemplo filtrar la tabla de empleados pasando el identificador del empleado.

sql_rest_0

Usando la siguiente configuración:

https://xxsdof1fcgj2uql-dbcs1.adb.sa-saopaulo-1.oraclecloudapps.com/ords/workspace_01/hr/employees/:id

--- Source code

select *
  from emp
 where empno = :id

Consumo en Postman

sql_rest_1

Forma 1 Agregando los parámetros en el URL Template

Entonces para nuestro ejemplo el requerimiento será filtrar los empleados por dos o más campos:

select *
  from emp
 where ename = :p_name
   and job = :p_job

Necesitaremos crear un URL de la siguiente forma con los paramteros p_name, p_job

https://xxsdof1fcgj2uql-dbcs1.adb.sa-saopaulo-1.oraclecloudapps.com/ords/workspace_01/hr/empinfo/:p_name/:p_job

sql_rest_2

Al consumir por Postman el resultado sería:

sql_rest_3

Y si lo usamos por la web seria:

sql_rest_3_1

Ahora mejoremos el ejemplo, que pasa si quiero filtrar por solo por el JOB, es decir retorne todos los empleados del JOB = SALESMAN, para ello necesitamos hacer un pequeño cambio en el SQL.

El null es para poder enviar el text "null" a través del URL y que nuestro código no lo considere como un nombre real.

#Hello-World

select *
  from emp
 where ename = case when :p_name = 'null' then ename 
                    else :p_name 
                end
   and job = :p_job

sql_rest_4

Entonces esto nos devuelve todos los empleados que son job tipo SALESMAN

sql_rest_5

Y en PostMan

sql_rest_5_1

Note que en este último ejemplo use la palabra null, pero podría ser cambiada por cualquier otra.

Forma 2, Sin parámetros el URL Template

Para este ejemplo nuestro REST creado no tiene los parámetros en el URL del template:

https://xxsdof1fcgj2uql-dbcs1.adb.sa-saopaulo-1.oraclecloudapps.com/ords/workspace_01/hr/employees/

Note que seguimos usando el mismo SQL, y al final ahora se han agregado los parámetros que usaremos, y en source type es tipo URI

sql_rest_6_0

Una vez creado probamos en la web de la siguiente forma:

Note que enviamos el parametro del nombre del empleado como null.

sql_rest_6

Y en Postman ya no enviamos null solo ALLLEN para filtrar al empleado.

sql_rest_6_1

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s