4D v14.3

URLs und Form Actions

Home

 
4D v14.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 bietet eine weitere Möglichkeit, wenn Sie “gepostete” Formulare verwenden wollen. Das sind statische HTML-Seiten, die Daten an den Web Server senden. Sie müssen vom Typ POST sein, die Formularaktion 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.

Der Web Server ruft, wenn er ein "gepostetes" Formular erhält, die Projektmethode COMPILER_WEB auf, dann die Datenbankmethode On Web Authentication. Gibt sie Wahr zurück, wird die Methode MethodName ausgeführt. 4D analysiert die im Formular vorhandenen HTML Felder, findet erneut ihre Werte und füllt die 4D Variablen automatisch mit deren Inhalt. Das Feld im Formular und die 4D Variable müssen beide denselben Namen haben.

Sie können auch den Befehl WEB GET VARIABLES verwenden, der Namen und Werte alle Felder wiederfindet, die in einer an den Server übertragenen HTML Seite enthalten sind.

Hinweis: 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 auf den Wert der Variablen mit demselben Namen. Für Optionen im Formular, z.B. Kontrollkästchen, setzt 4D die zugeordnete Variable auf 1, wenn es gewählt wurde, sonst auf 0 (Null).
Für die Eingabe numerischer Daten konvertiert 4D den Wert des Feldes von Alpha –> Zahl.

Hinweis: Hat ein Feld im Formular den Namen OK (z.B. die Schaltfläche Senden), wird die Systemvariable OK auf 1 gesetzt, wenn der Wert des Feldes nicht leer ist, sonst auf 0 (Null).

In einer gestarteten 4D Web Datenbank soll der Browser Datensätze über eine statische HTML Seite suchen können. Diese Seite lautet “Suche.htm”. Die Datenbank enthält weitere statische Seiten, über welche Sie z.B. das Suchergebnis anzeigen können (“Ergebnis.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>
<!-- Normalerweise setzen wir den Namen der Schaltfläche in VALUE, aus Interpretationsgründen müssen Sie in VALUE eine Zahl setzen-->
<INPUT TYPE=CHECKBOX NAME=EXACT  VALUE="1">Whole word<BR>
<!-- OK ist ein besonderer Fall-->
<INPUT TYPE=SUBMIT NAME=OK VALUE="Suche">
</FORM>

Tippen Sie zur Dateneingabe im Dateneingabebereich “ABCD” ein, prüfen Sie die Option und bestätigen Sie, indem Sie auf die Schaltfläche Suchen klicken.

4D ruft dann die Projektmethode COMPILER_WEB auf:

 C_TEXT(VNAME)
 VNAME:=""
 C_LONGINT(vEXACT)
 vEXACT:=0
 OK:=0 `Sonderfall

Im Beispiel enthält vNAME den String “ABCD”, vEXACT ist gleich 1 und OK ist gleich 1 (da der Name der Schaltfläche OK ist).
4D ruft die Datenbankmethode On Web Authentication auf –sofern vorhanden, dann wird die Projektmethode PROCESSFORM aufgerufen. Sie lautet:

 If(OK=1)
    If(vEXACT=0) // Wenn die Option nicht ausgewählt wurde
       vNAME:=VNAME+"@"
    End if
    QUERY([Jockeys];[Jockeys]Name=vNAME)
    vLIST:=Char(1) // Gib die Liste in HTML zurück
    FIRST RECORD([Jockeys])
    While(Not(End selection([Jockeys])))
       vLIST:=vLIST+[Jockeys]Name++[Jockeys]Tel+<BR>
       NEXT RECORD([Jockeys])
    End while
    WEB SEND FILE(results.htm) // Sende die Liste an das Formular Ergebnis.htm
  // das eine Referenz auf die Variable vLIST enthält (das ist <!--4DVAR vLIST––>)
    ...
 End if

Syntax: 4DCGI/<action>

Modus: Beide

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 zu jeder 4D Methode, die über URLs aufgerufen wird, einen Textparameter. 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: "Ein Runtime Fehler ist aufgetreten in Zeile Nr: 0 beim Ausführen der Methode * ON WEB CONNECTION: Ungültiger Parameter in einem Start Befehl."
    Dieser Runtime Fehler tritt auf, wenn der Textparameter $1 in der 4D Methode, die durch Klick auf das HTML Link aufgerufen wird, nicht deklariert wurde. Da der Ausführungskontext die aktuelle HTML Seite ist, bezieht sich der Fehler auf "Zeile 0" der Methode, welche die Seite an den Web Browser gesendet hat. Solche Fehler werden durch explizites Deklarieren des Textparameters $1 behoben:
      `M_ADD_RECORDS Projektmethode
     C_TEXT($1`Dieser Parameter MUSS explizit deklariert werden
     Repeat
        ADD RECORD([Clients])
     Until(OK=0)
  • 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.

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Web Server

 
SIEHE AUCH 

4D Objekte mit HTML Objekten verbinden
WEB GET VARIABLES

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)

Geerbt von : URLs und Form Actions ( 4D v12.4)