4D v16.3

URLs und Form Actions

Home

 
4D v16.3
URLs und Form Actions

URLs und Form Actions  


 

 

Der 4D Web Server bietet verschiedene "Form actions" in URL und HTML, um bestimmte Aktionen in Ihrer Datenbank zu integrieren.

Es gibt folgende URLs:

  • 4DACTION/, um ein beliebiges HTML Objekt mit einer Projektmethode Ihrer Datenbank zu verbinden.
  • 4DCGI/, um die Datenbankmethode On Web Connection von einem beliebigen HTML Objekt aus aufzurufen.
  • 4DSYNC/, um die Daten der Tabellen zu synchronisieren.

4D Web Server akzeptiert einige zusätzliche URLs:

  • /4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR und /4DWEBTEST. Damit erhalten Sie Informationen über die Funktionsweise Ihrer 4D Web Site. Weitere Informationen dazu finden Sie im Abschnitt Information über die Web Site.
  • /4DWSDL, um den Zugriff auf die Deklarationsdatei der Web Services zu erlauben, die auf dem Server veröffentlicht werden. Weitere Informationen dazu finden Sie im Abschnitt Befehle für Web Services (Server) und im Handbuch 4D Designmodus im Abschnitt Seite Web/ Web Services.

Syntax: 4DACTION/MyMethod/Param

Verwendung: URL oder "Form action"

Über diese URL können Sie ein HTML Objekt (Text, Schaltfläche...) mit einer 4D Projektmethode verbinden. Der Link lautet /4DACTION/MyMethod/Param, wobei MyMethod der Name der auszuführenden 4D Projektmethode ist, wenn auf ein Link geklickt wird, Param ein optionaler Textparameter, der der Methode in $1 übergeben wird (siehe nachfolgenden Abschnitt “Textparameter für über URLs aufgerufene 4D Methoden”).
Empfängt 4D die Anfrage /4DACTION/MyMethod/Param, wird – sofern vorhanden – die Datenbankmethode On Web Authentication aufgerufen. Gibt diese Wahr zurück, wird die Methode MyMethod ausgeführt.
4DACTION/ kann einer URL in einer statischen Web Seite zugewiesen werden. Die Syntax der URL muss lauten:

<<A HREF="/4DACTION/MyMethod/Param">Etwas ausführen</A>

Die Projektmethode MyMethod sollte in der Regel eine "Response" zurückgeben, z.B. über WEB SEND FILE oder WEB SEND BLOB, etc. eine HTML Seite senden. Achten Sie auf eine möglichst kurze Ausführung, um den Browser nicht zu blockieren.

Hinweis: Eine über 4DACTION aufgerufene Methode darf keine Oberflächenelemente aufrufen (DIALOG, ALERT...).

Achtung: Damit eine 4D Methode mit der URL 4DACTION/ ausgeführt werden kann, muss die Option "Zugang per 4D HTML Tags und URLs (4DAction...)" markiert sein. Sie ist im Dialogfenster Methode-Eigenschaften enthalten und standardmäßig inaktiv. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

Dieses Beispiel weist die URL 4DACTION/ einem HTML Bildobjekt zu, um auf der Seite ein Bild dynamisch anzuzeigen. Sie fügen in einer statischen Seite folgende Anweisungen ein:

<IMG SRC="/4DACTION/PICTFROMLIB/1000">

Die Methode PICTFROMLIB lautet:

 C_TEXT($1// Dieser Parameter muss immer angegeben sein
 C_PICTURE($PictVar)
 C_BLOB($BlobVar)
 C_LONGINT($Number)
  // Wir finden die Bildnr. im String $1 wieder
 $Number:=Num(Substring($1;2;99))
 GET PICTURE FROM LIBRARY($Number;$PictVar)
 PICTURE TO GIF($PictVar;$BlobVar)
 WEB SEND BLOB($BlobVar;"Pict/gif")

Der 4D Web Server ermöglicht auch “gepostete” Formulare zu verwenden. Das sind statische HTML-Seiten, die Daten an den Web Server senden. Sie müssen vom Typ POST sein und die Aktion des Formulars muss zwingend mit /4DACTION/MethodName starten.

Hinweis: Ein Formular lässt sich über zwei Methoden übertragen, beide sind mit 4D verwendbar:

  • POST wird in der Regel verwendet, um im Web Server hinzugefügte Daten in der Datenbank hinzuzufügen.
  • GET wird in der Regel verwendet, um im Web Server Daten anzufordern, die aus einer Datenbank stammen.

Erhält der Web Server ein "gepostetes" Formular, ruft er die Datenbankmethode On Web Authentication auf (wenn sie existiert). Gibt sie Wahr zurück, wird die Methode MethodName ausgeführt. In dieser Methode müssen Sie den Befehl WEB GET VARIABLES aufrufen, um die Namen und Werte aller Felder wiederzufinden, die in einer an den Server übertragenen HTML Seite enthalten sind.

Hinweis zur Kompatibilität: In konvertierten Anwendungen wird, wenn im Seite Kompatibilität die Option "Automatische Variablenzuweisung" markiert ist, zuerst die spezielle Projektmethode COMPILER_WEB (wenn vorhanden) aufgerufen, dann die Datenbankmethode On Web Authentication. 4D finden die im Formular vorhandenen HTML Felder und füllt die 4D Variablen in der aufgerufenen Methode mit deren Inhalt, wenn sie den denselben Namen haben. Diese Funktionsweise ist überholt. Weitere Informationen dazu finden Sie im Abschnitt 4D Objekte mit HTML Objekten verbinden.

Die HTML Syntax für das Formular lautet:

  • Um die Aktion in einem Formular zu definieren:
    <FORM ACTION="/4DACTION/MethodName" METHOD=POST>
  • Um ein Feld in einem Formular zu definieren:
    <INPUT TYPE=Field type NAME=Field name VALUE="Standardwert">

4D setzt für jedes Feld im Formular den Wert des Feldes in die Variable mit demselben Namen.

In einer gestarteten 4D Web Datenbank sollen Browser in Datensätzen über eine statische HTML Seite suchen können. Diese Seite lautet “Suchen.htm”. Die Datenbank enthält weitere statische Seiten, über welche Sie z.B. das Suchergebnis anzeigen können (“Ergebnisse.htm”). Der Typ POST wurde sowohl der Seite als auch der Aktion /4DACTION/SUCHE zugewiesen.

Hier der HTML Code für diese Seite:

<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST>
<INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR>
<INPUT TYPE=CHECKBOX NAME=EXACT VALUE="Wort">Ganzes Wort<BR>
<INPUT TYPE=SUBMIT NAME=OK VALUE="Suchen">
</FORM>

Tippen Sie zur Dateneingabe im Dateneingabebereich “ABCD” ein, prüfen Sie die Option "Ganzes Wort" und bestätigen Sie durch Klicken auf die Schaltfläche Suchen.

In der an den Web Server gesendeten Anfrage:

VNAME="ABCD"
vEXACT="Wort"
OK="Suchen"

4D ruft die Datenbankmethode On Web Authentication (wenn vorhanden), dann die folgende Projektmethode PROCESSFORM:

 C_TEXT($1//zwingend für komplilierten Modus
 C_LONGINT($vName)
 C_TEXT(vNAME;vLIST)
 ARRAY TEXT($arrNames;0)
 ARRAY TEXT($arrVals;0)
 WEB GET VARIABLES($arrNames;$arrVals//Alle Variablen des Formulars finden
 $vName:=Find in array($arrNames;"vNAME")
 vNAME:=$arrVals{$vName}
 If(Find in array($arrNames;"vEXACT")=-1) //Wurde die Option nicht markiert
    vNAME:=VNAME+"@"
 End if
 QUERY([Jockeys];[Jockeys]Name=vNAME)
 FIRST RECORD([Jockeys])
 While(Not(End selection([Jockeys])))
    vLIST:=vLIST+[Jockeys]Name+" "+[Jockeys]Tel+"<BR>"
    NEXT RECORD([Jockeys])
 End while
 WEB SEND FILE("Ergebnisse.htm") //Die Liste zum Formular Ergebnisse.htm senden
  //mit einer Referenz auf die Variable vLIST
  //zum Beispiel <!--4DHTML vLIST-->
  //...
End if

Syntax: 4DCGI/<action>

Verwendung: URL

Empfängt der 4D Web Server die URL /4DCGI/<action>, wird die Datenbankmethode On Web Authentication aufgerufen (sofern vorhanden). Gibt sie Wahr zurück, ruft der Web Server die Datenbankmethode On Web Connection auf durch Senden der URL an $1, und zwar unverändert.

Die URL 4DCGI/ entspricht keiner Datei, ihre Aufgabe ist lediglich, 4D mit der Datenbankmethode On Web Connection aufzurufen. Der Parameter “<action>” kann Information jeglicher Art enthalten.

Mit dieser URL können Sie eine beliebige Aktion durchführen. Sie müssen lediglich den Wert von $1 in der Datenbankmethode On Web Connection oder in einer ihrer Untermethoden prüfen und 4D die entsprechende Aktion ausführen lassen. Sie können z.B. eigene statische HTML Seiten einrichten, um Datensätze hinzuzufügen, zu suchen oder zu sortieren bzw. GIF Bilder on-the-fly erstellen. Anwendungsbeispiele zu dieser URL finden Sie unter den Befehlen PICTURE TO GIF und WEB SEND HTTP REDIRECT.

Am Ende einer Aktion muss über Befehle, die Daten senden, eine Antwort zurückgegeben werden (WEB SEND FILE, WEB SEND BLOB, etc.).

Warnung: Achten Sie darauf, dass die kürzest mögliche Aktion ausgeführt wird, um den Browser nicht unnötig warten zu lassen.

4D sendet Textparameter zu jeder 4D Methode, die über spezielle URLs (4DACTION/ und 4DCGI/) aufgerufen wird. Dabei gilt folgendes:

  • Auch wenn Sie diesen Parameter nicht verwenden, müssen Sie ihn explizit mit dem Befehl C_TEXT angeben. Denn sonst treten Runtime Fehler auf, wenn Sie über das Web auf eine kompilierte Datenbank zugreifen. Die Meldung kann lauten wie folgt:
    "Fehler im dynamischen Code
    Ungültige Parameter in einem EXECUTE Befehl
    Methode Name
    Zeile Nr.
    Beschreibung: [<Datum und Zeit>]
    Dieser Runtime Fehler tritt auf, wenn der Textparameter $1 in der 4D Methode, die durch Klick auf den HTML Link aufgerufen wird, nicht deklariert wurde. Da der Ausführungskontext die aktuelle HTML Seite ist, bezieht sich der Fehler nicht auf die Methodenzeile. Solche Fehler werden durch explizites Deklarieren des Textparameters $1 behoben:
      //Projektmethode M_SEND_PAGE
     C_TEXT($1// Dieser Parameter MUSS explizit deklariert werden
      //...
     WEB SEND FILE($mypage)
  • Der Parameter $1 gibt die Extradaten am Ende der URL zurück. Sie können ihn als Platzhalter zum Übergeben von Werten aus der HTML Umgebung in die 4D Umgebung einsetzen.

Je nach Art und Ursprung des Aufrufs einer Methode müssen Sie bestimmte Parameter angeben.

  //Datenbankmethode On Web Connection
 C_TEXT($1;$2;$3;$4;$5;$6//Diese Parameter MÜSSEN explizit deklariert werden.

  • Über 4DACTION/ als URL aufgerufene Methode
    Sie müssen den Parameter $1 angeben:
  //Über URL 4DACTION/ aufgerufene Methode
 C_TEXT($1//Dieser Parameter MUSS explizit deklariert werden.
  • Über 4DSCRIPT/ als HTML Kommentar in einem Dokument aufgerufene Methode
    Die Methode sollte in $0 einen Wert zurückgeben. Sie müssen den Parameter $0 und $1 angeben:
  //Über 4DSCRIPT/ als HTML Kommentar aufgerufene Methode
 C_TEXT($0;$1//Diese Parameter MÜSSEN explizit deklariert werden. 

Syntax:
4DSYNC/$catalog
{/TableName}
4DSYNC/TableName{/TableName}{/FieldName1,...,FieldNameN}{Params}

Verwendung: URL in POST oder GET Methoden

Diese URL synchronisiert die Daten in den Tabellen lokaler 4D Datenbanken mit einer remote Datenbank über HTTP. Sie kann z.B. eine 4D Datenbank mit einer Client Applikation synchronisieren, die auf einem Smartphone installiert ist, sowie andere HTTP Applikationen von Drittherstellern.

Die URL 4DSYNC/ wird in einer GET Methode verwendet, um die Daten der 4D Datenbank wiederherzustellen oder in einer POST Methode, um die Daten in der 4D Datenbank zu aktualisieren.

Folgende HTTP Anfragen können empfangen werden:

  • GET /4DSYNC/$catalog
    Gibt die Liste der Tabellen der Datenbank zurück und wieviel Datensätze darin enthalten sind. Haben Sie z.B. eine Struktur mit zwei Tabellen: PERSONEN (2 Datensätze) und RECHNUNGEN (3 Datensätze) und verwenden die Syntax http://localhost/4DSYNC/$catalog/, wird im Browser PERSONEN 2 RECHNUNGEN 3 zurückgegeben.
  • GET /4DSYNC/$catalog/TableName
    Gibt eine Beschreibung der Struktur TableName zurück (XML Format).
  • GET /4DSYNC/TableName/FieldName1{,FieldName2},...
    Gibt die Daten des Feldes FieldName in der Tabelle TableName zurück
  • GET /4DSYNC/TableName/FieldName1?$stamp=0&$format=json
    Gibt die Daten des Feldes FieldName in der Tabelle TableName zurück, beginnend mit stamp 0 und im Format json.
  • POST /4DSYNC/TableName/FieldName1{,FieldName2},...
    Integriert die Änderungen, die auf dem Client Rechner gemacht wurden, in die 4D Datenbank.
Hinweis: Das Datenaustauschformat ist JavaScript Object Notation (JSON). Die komplette Syntax ist über den technischen Support von 4D, Inc erhältlich.

Hinweis: Um die Synchronisierungsmechanismus zu aktivieren, müssen Sie in den Datenbank-Eigenschaften auf der Seite Web>Konfiguration die Option Erlaube Datenbankzugriff per "4DSYNC" URLs markieren (siehe unten). Sonst funktionieren Anfragen, die 4D SYNC URLs enthalten, nicht.

Beim Verwenden der URL 4DSYNC/ müssen Sie folgende Prinzipien berücksichtigen:

  • 4D arbeitet mit der virtuellen Struktur der Datenbank, wenn sie vorhanden ist. In diesem Fall entsprechen die Parameter TabelleName und FeldName den Tabellen- bzw. Feldnamen, die über die Befehle SET FIELD TITLES und SET TABLE TITLES definiert wurden. Beachten Sie, dass die Reichweite dieser Befehle die Sitzung ist. Bei Verwendung von 4D Server müssen Sie diese in einer Serverprozedur auf dem Server aufrufen.
  • Die Replikation der Felder vom Typ BLOB und Bild wird nicht unterstützt
  • Damit Daten synchronisierbar sind:
    • muss der HTTP Server gestartet sein.
    • Auf der Seite Web>Konfiguration der Datenbankeigenschaften muss die Option "Erlaube Datenbankzugriff per "4DSYNC" URLs" markiert sein (siehe Abschnitt Sicherheit der Verbindung).
    • Die Eigenschaft "Replikation erlauben" muss für jede Tabelle markiert sein, deren Daten Sie synchronisieren wollen. Wurde eine virtuelle Struktur definiert, müssen diese Tabellen darin enthalten sein.
      Warnung: Ist diese Option markiert, wird zusätzliche Information veröffentlicht; Sie müssen sicherstellen, dass der Zugriff auf Ihre Datenbank geschützt ist. Weitere Informationen dazu finden Sie unter Sicherheit der Verbindung.
  • Empfängt 4D eine /4DSYNC Anfrage, wird die Datenbankmethode On Web Authentication aufgerufen (außer das Kennwort ist inkorrekt, siehe Verbindungsdiagramm unter Sicherheit der Verbindung). Gibt sie Wahr zurück, wird die Anfrage ausgeführt; andernfalls wird sie zurückgewiesen.



Siehe auch 

4D Objekte mit HTML Objekten verbinden
WEB GET VARIABLES

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Web Server

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)