Apex · Oracle · ORDS · REST

Oracle APEX, RESTfull Data Services, POST y PUT, insert y update

En este post veremos como usar los metodos POST y PUT para hacer updates e insert.

Para ver como funciona el GET pueden revisar mis anteriores post:

Usaremos el metodo POST para el insert

Para ello creamos en ORDS nuestro template on el metodo POST y en la sección de código agregamos el insert, se puede hacer uso de procedimientos almacenados, funciones, lo que se necesite, solo considerar las variables BIND.

  declare
      new_id  number;
  begin
      insert into emp
        ( empno
        , ename
        , job
        , mgr
        , hiredate
        , sal
        , comm
        , deptno)
      values (
          null
        , :ename
        , :ejob
        , :mgr
        , sysdate
        , :sal
        , :comm
        , :deptno)
      returning empno into new_id;
      :status_code := 201;

    apex_json.open_object;
    apex_json.write('success',true);
    apex_json.write('message', 'Employee inserted with ID: ' || new_id);
    apex_json.close_object;
  exception
  when others then
    :status_code := 400;
      apex_json.open_object;
      apex_json.write('success',false);
      apex_json.write('message', sqlerrm);
      apex_json.close_object;
  end;

sql_POST_1

Note que se ha añadido apex_json.open_object para dar una respuesta.

Para hacer la prueba continuaremos usando POSTMAN y los parámetros los enviaremos en el body en formato JSON.

En el ejemplo insertare al empleado ANGEL_2

{
    "ename" : "ANGEL_2"
  , "job" : "MANAGER"
  , "sal": 1000
}

sql_POST_2

En el mensage de retorno podemos ver el usuario insertado correctamente.

PUT para el update

Para ello creamos en ORDS nuestro template on el metodo PUT y en la sección de código agregamos el UPDATE, se puede hacer uso de procedimientos almacenados, funciones, lo que se necesite, solo considerar las variables BIND.

En el código, la clave primaria para actualizar será empno.

begin
    update emp
       set ename = nvl(:ename,ename)
         , job = :job
         , sal = :sal
         , comm = :comm
         , deptno = :deptno
     where empno = :empno;

  apex_json.open_object;
  apex_json.write('success',true);
  apex_json.write('message','Empno: ' || :empno || ' updated');
  apex_json.close_object;

:status := 200;
exception
    when others then
        :status := 400;
        apex_json.open_object;
        apex_json.write('success',false);
        apex_json.write('message', sqlerrm);
        apex_json.close_object;
end;

sql_PUT_1

Para hacer la prueba continuaremos usando POSTMAN y los parámetros los enviaremos en el body en formato JSON.

En el ejemplo actualizare al empleado con ID 7499

sql_PUT_2

Leave a comment