Auswahl  

REST Beispiele mit apex_web_service 

APEX:PL/SQL:REST
29.04.20 (MP)
29.04.20

Passende Schulungen zum Thema

Nachdem das Thema REST immer mehr an Schwung gewinnt, wird es Zeit darüber einen Tipp zu schreiben.
Wir haben aus eigener Erfahrung lange im Internet gesucht und nur selten etwas gefunden.
Deswegen haben wir ein paar Beispiele gesammelt:

Der Einfachheit halber, wird mit nicht mit SSL Verschlüsselung gearbeitet, ansonsten muss noch ein Wallet eingerichtet werden

1. CLOB Übertragen (upload)
l_clob:=APEX_WEB_SERVICE.MAKE_REST_REQUEST(      
 p_url=>'http://www.muniqsoft-training.de/ords/my_rest/muso/putCLOB',
 p_http_method        =>'PUT',
 p_transfer_timeout =>720,
 p_username        =>'rest_user',
 p_password        =>'rest_password'
 p_body            =>text_lob,  --CLOB           
);

Auf dem Zielserver dann einen Rest-Service anlegen (Typ PUT):
BEGIN
my_proc(:body_text);
END;

Die Procedure my_proc könnte dann wie folgt aussehen:
CREATE OR REPLACE PROCEDURE my_proc (p_clob IN CLOB)
IS
...
BEGIN
...
END;

2. BLOB übertragen (upload)
l_clob:=APEX_WEB_SERVICE.MAKE_REST_REQUEST(      
p_url=>'http://www.muniqsoft-training.de/ords/my_rest/muso/putBLOB',
 p_http_method      =>'PUT',
 p_transfer_timeout =>720,
 p_username         =>'rest_user',
 p_password         =>'rest_password'
 p_body_blob        =>pdf_lob, --BLOB      
);

Auf dem Zielserver dann einen Rest-Service anlegen (Typ PUT):
BEGIN
my_proc(:body);
END;

Die Procedure my_proc könnte dann wie folgt aussehen:
CREATE OR REPLACE PROCEDURE my_proc (p_blob IN BLOB)
IS
...
BEGIN
...
END;

3. Zwei Parameter übertragen (Upload)
DECLARE
l_clob CLOB;
BEGIN
    apex_web_service.g_request_headers.delete();
     apex_web_service.g_request_headers(1).name  := 'Content-Type';  
     apex_web_service.g_request_headers(1).value := 'application/octet-stream'; --'application/x-www-form-urlencoded';
     apex_web_service.g_request_headers(2).name  := 'PARAMETER_A';  
     apex_web_service.g_request_headers(2).value := '12345';
     apex_web_service.g_request_headers(3).name  := 'PARAMETER_B';  
     apex_web_service.g_request_headers(3).value := to_char(sysdate,'DD.MM.YYYY');
l_clob:=APEX_WEB_SERVICE.MAKE_REST_REQUEST(
        p_url=>'http://www.muniqsoft-training.de/ords/my_rest/muso/putDATA',
        p_http_method       =>'PUT',
        p_transfer_timeout  =>180,
        p_username          =>'rest_user',
        p_password          =>'rest_passwort',
        p_body              =>my_clob_text);
 if apex_web_service.g_status_code = 200 then
    dbms_output.put_line('Übertragung erfolgreich abgeschlossen.');
 else
    dbms_output.put_line('Fehler aufgetreten: ' || apex_web_service.g_status_code);
 end if;
END;

Auf dem Zielserver dann wieder ein REST Service anlegen (TYP: PUT)
BEGIN
:status:=my_func(
p_parameter1=>:PARAMETER_A,
p_parameter1=>:PARAMETER_A,
p_clob=>:BODY_TEXT);
END;

REST Parameter:
Name Bind-Parameter Zugriffm. Quelltyp Datentyp
PARAMETER_A PARAMETER_A IN HTTP HEADER STRING
PARAMETER_B PARAMETER_B IN HTTP HEADER STRING
STATUS STATUS OUT RESPONSE STRING

Die Funktion könnte dann wie folgt aussehen:
CREATE OR REPLACE FUNCTION my_func(
p_parameter1 IN VARCHAR2,
p_parameter2 IN VARCHAR2,
p_clob IN CLOB) RETURN VARCHAR2
IS
BEGIN
...
RETURN 200;
EXCEPTION WHEN OTHERS THEN
  RETURN 500;
END;

 

Weitere Interessante Kurs-Tipps zum Thema

Oracle Rest Benutzer im TomCat
Oracle ORDS Fehler und Lösungsvorschläge
Oracle ORDS Installation für APEX
Oracle ORDS Check Skript für gängigste Webserver 404 Fehler
Oracle ORDS Parameter der Datei defaults.xml

Besuchen Sie uns doch bei einer unsere über 50 Oracle Schulungen in München - Unterhaching, oder verfolgen Sie die Training per Videostreaming bequem vom Home Office oder Büro aus.