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.
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
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
Al consumir por Postman el resultado sería:
Y si lo usamos por la web seria:
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
Entonces esto nos devuelve todos los empleados que son job tipo SALESMAN
Y en PostMan
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
Una vez creado probamos en la web de la siguiente forma:
Note que enviamos el parametro del nombre del empleado como null.
Y en Postman ya no enviamos null solo ALLLEN para filtrar al empleado.