4D v16.3

URLs y acciones de formularios

Inicio

 
4D v16.3
URLs y acciones de formularios

URLs y acciones de formularios  


 

 

El servidor web 4D ofrece diferentes URLs y acciones de formularios HTML especiales que permiten implementar diferentes acciones en su base.
Estos URLs son los siguientes:

  • 4DACTION/, para asociar un objeto HTML a un método de proyecto de su base,
  • 4DCGI/, permite llamar el Método base On Web Connection desde todo objeto HTML.
  • 4DSYNC/, para sincronizar los datos de las tablas.
Adicionalmente, el servidor web 4D acepta varios URLs adicionales:
  • /4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR y /4DWEBTEST, para permitirle obtener información sobre el funcionamiento de su sitio Web 4D. Estos URLs se describen en la sección Información sobre el sitio web.
  • /4DWSDL, permite el acceso al archivo de declaración de los Servicios web publicados en el servidor. Para mayor información, consulte la sección Web Services (Servidor) y el Manual de Diseño.

Sintaxis: 4DACTION/MiMetodo{/Param}

Uso:
URL o acción de formulario.

Este URL permite asociar un objeto HTML (texto, imagen, botón...) a un método de proyecto 4D. Este enlace será del tipo /4DACTION/MiMetodo/Param donde MiMetodo es el nombre del método de proyecto 4D a ejecutar cuando el usuario hace clic en el enlace y Param un parámetro opcional de tipo Texto pasado al método en $1 (ver el párrafo “Los parámetros Texto pasados a los métodos vía los URLs”).

Cuando 4D recibe una petición /4DACTION/MiMetodo/Param, se llama al Método de base On Web Authentication (si existe). Si devuelve True, se ejecuta el método MiMetodo.

4DACTION/
puede estar asociado a un URL en una página web estática. La sintaxis del URL debe ser de esta forma:

<A HREF="/4DACTION/MyMethod/Param"> Do Something</A> 

El método de proyecto MiMetodo generalmente debe devolver una "respuesta" (envío de página HTML utilizando WEB SEND FILE o WEB SEND BLOB, etc.). Asegúrese de hacer los procesos tan cortos como sea posible para no bloquear el navegador.

Nota: un método llamado por 4DACTION no debe llamar a los elementos de interfaz (DIALOG, ALERT...).

Advertencia: para que un método 4D pueda ejecutarse vía el URL 4DACTION/, debe tener el atributo “Disponible vía 4DACTION, 4DMETHOD y 4DSCRIPT” (deseleccionado por defecto), definido en las propiedades del método. Para mayor información sobre este punto, consulte la sección Seguridad de las conexiones.

Este ejemplo describe la asociación del URL 4DACTION/ con un objeto HTML imagen con el fin de mostrar dinámicamente una imagen en la página. Inserte la siguiente instrucción en una página HTML estática:

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

El método PICTFROMLIB es el siguiente:

 C_TEXT($1// Este parámetro debe declararse siempre
 C_PICTURE($PictVar)
 C_BLOB($BlobVar)
 C_LONGINT($Number)
  // Recuperamos el número de imagen en la cadena $1
 $Number:=Num(Substring($1;2;99))
 GET PICTURE FROM LIBRARY($Number;$PictVar)
 PICTURE TO GIF($PictVar;$BlobVar)
 WEB SEND BLOB($BlobVar;"Pict/gif")

El servidor web 4D permite utilizar formularios “enviados”, es decir las páginas HTML estáticas que envían datos al servidor web y recuperar fácilmente el conjunto de los valores. La acción del formulario debe obligatoriamente comenzar por /4DACTION/NomMetodo.

Nota: un formulario puede ser enviado por medio de dos métodos (ambos pueden utilizarse con 4D):

  • POST, generalmente utilizado para añadir datos al servidor web, en una base de datos,
  • GET, generalmente utilizado para hacer peticiones al servidor web, datos que vienen de una base.

En este caso, cuando el servidor web recibe un formulario enviado, llama al Método de base On Web Authentication (si existe). Si devuelve True, se ejecuta el método NomMetodo. En este método, debe llamar al comando WEB GET VARIABLES con el fin de recuperar el nombre y el valor de todos los campos incluidos en una página HTML enviada al servidor.

Nota de compatibilidad: en bases convertidas, si la opción "Asignación de variables automática" en la Página Compatibilidad está seleccionada, el método proyecto especial COMPILER_WEB (si existe) se llama en primero; 4D recupera los valores de los campos HTML que se encuentran en el formulario y llena automáticamente las variables 4D en el método llamado con sus contenidos si tienen el mismo nombre. Este funcionamiento es obsoleto. Para más información, consulte la sección Asociar objetos 4D a objetos HTML .

La sintaxis HTML a aplicar en el formulario es del siguiente tipo:
  • Para la definición de la acción del formulario:
    <FORM ACTION="/4DACTION/NomMetodo" METHOD=POST>
  • Para definir un campo en un formulario:
    <INPUT TYPE=Tipodecampo NAME=Nombredelcampo VALUE="Valorpordefecto">

Para cada campo en el formulario, 4D define el valor del campo para el valor de la variable con el mismo nombre.

En una base web 4D, queremos que los navegadores puedan buscar registros utilizando una página estática HTML. Esta página se llama “buscar.html”. La base contiene otras páginas estáticas que le permiten, por ejemplo, mostrar el resultado de la búsqueda (“resultados.html”). El tipo POST ha estado asociado a la página, como también la acción /4DACTION/SEARCH.

Este es el código HTML que corresponde a esta página:

#codeHTML]<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST>
<INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR>
<INPUT TYPE=CHECKBOX NAME=EXACT VALUE="Word">Whole word<BR>
<INPUT TYPE=SUBMIT NAME=OK VALUE="Search">
</FORM>[#/codeHTML]

Durante la entrada de datos, escriba “ABCD” en el área de entrada, seleccione la opción "Palabra completa" y valide haciendo clic en el botón Buscar.
En la petición enviada al servidor web:

VNAME="ABCD"
vEXACT="Word"
OK="Search"

4D llama al Método de base On Web Authentication (si existe), luego se llama al método proyecto PROCESARFORM, que es el siguiente:

 C_TEXT($1//obligatorio para modo compilado
 C_LONGINT($vName)
 C_TEXT(vNAME;vLIST)
 ARRAY TEXT($arrNames;0)
 ARRAY TEXT($arrVals;0)
 WEB GET VARIABLES($arrNames;$arrVals//recuperamos todas las variables del formulario
 $vName:=Find in array($arrNames;"vNAME")
 vNAME:=$arrVals{$vName}
 If(Find in array($arrNames;"vEXACT")=-1)&NBSP//Si la opción no ha sido seleccionada
    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("results.htm") //Envío de la lista en el formulario results.htm
  //que contiene una referencia a la variable vLIST
  //por ejemplo <!--4DHTML vLIST-->
  //...
End if

Sintaxis: 4DCGI/<action>

Uso: URL.

Cuando el servidor web 4D recibe el URL /4DCGI/<action> se llama el Método de base On Web Authentication (si existe). Si devuelve True, el servidor web llama al Método base On Web Connection enviando el URL “tal cual” a $1.
El URL 4DCGI/ URL no corresponde a ningún archivo. Su papel es llamar 4D utilizando el Método base On Web Connection. El parámetro “<action>” puede contener todo tipo de información.
Este URL le permite efectuar todo tipo de acción. Sólo necesita probar el valor de $1 en el Método base On Web Connection o en uno de sus submétodos y realizar en 4D la acción apropiada. Por ejemplo, puede crear páginas HTML estáticas totalmente personalizadas para añadir, buscar, u ordenar registros, o generar imágenes GIF rápidamente. Ejemplos de cómo utilizar este URL se encuentran en las descripciones de los comandos PICTURE TO GIF y WEB SEND HTTP REDIRECT.
Después de una acción, debe devolverse una “respuesta”, utilizando uno de los comandos de envío de datos (WEB SEND FILE, WEB SEND BLOB, etc.).

Advertencia: asegúrese de ejecutar las acciones más cortas posibles, con el fin de no bloquear el navegador.

4D envía los parámetros de Texto a los métodos 4D llamados por los URLs especiales (4DACTION/ y 4DCGI/). He aquí algunas observaciones sobre estos parámetros:

  • Aunque no utilice estos parámetros, debe declararlos explícitamente con el comando C_TEXT, de lo contrario se producirán errores runtime cuando acceda por web a una base ejecutada en modo compilado. El mensaje es del tipo
    "Error en código dinámico
    Parámetros incorrectos en un comando EXECUTE
    Nombre del método:
    Número de línea:
    Descripción: [<fecha y hora>]"

    Este error runtime se produce por el hecho de que el parámetro texto $1 no fue declarado en el método 4D llamado al hacer clic en el enlace HTML. Como el contexto de la ejecución es la página HTML actual, el error no hace referencia específicamente a la línea del método. Declarar explícitamente el parámetro texto $1 permite eliminar estos errores:
      //Método proyecto M_SEND_PAGE
     C_TEXT($1// Este parámetro debe declararse explícitamente
      //...
     WEB SEND FILE($mypage)
  • El parámetro $1 devuelve los datos adicionales ubicados al final del URL y pueden utilizarse para pasar los datos del entorno HTML al entorno 4D.

Debe declarar diferentes parámetros en función del origen y de la naturaleza de la llamada del método 4D.

  • Método llamado por el URL 4DACTION/
    Debe declarar el parámetro $1:
  ` Método llamado por el URL 4DACTION/
 C_TEXT($1)
  • Método llamado por etiqueta 4DSCRIPT/ como un comentario HTML en un documento
    El método debe devolver un valor en $0. Debe declarar el parámetro $0 y $1:
      //Método llamado por la etiqueta 4DSCRIPT/ como un comentario HTML
     C_TEXT($0;$1//Estos parámetros DEBEN ser declarados explícitamente

Sintaxis:

4DSYNC/$catalog{/NomTabla}
4DSYNC/NomTabla{/NomTabla}{/NomCampo1,...,NomCampoN}{Params}

Uso: URL en método POST o GET

Este URL sincroniza los datos de las tablas de la base 4D local con una base remota vía HTTP. Se utiliza para sincronizar una base 4D con una aplicación cliente instalada en un Smartphone o con toda aplicación HTTP de terceros.

El URL 4DSYNC/ se utiliza en método GET para recuperar los datos de la base 4D o en método POST para actualizar los datos en la base 4D.

Estas son las diferentes peticiones HTTP utilizables:

  • GET /4DSYNC/$catalog
    Devuelve la lista de las tablas de la base y el número de registros que contiene.Por ejemplo para una estructura con dos tablas PERSONS (2 registros) e INVOICES (3 registros), la sintaxis: http://localhost/4DSYNC/$catalog/ devuelve en el navegador : PERSONS 2 INVOICES 3
  • GET /4DSYNC/$catalog/NomTabla
    Devuelve la descripción de la estructura de NomTabla (formato XML).
  • GET /4DSYNC/NomTabla/NomCampo1{,NomCampo2},...
    Devuelve los datos de los campos NomCampo de la tabla NomTabla.
  • GET /4DSYNC/TableName/FieldName1?$stamp=0&$format=json
    Devuelve los datos del campo NomCampo en la tabla NomTabla a partir del stamp 0 y al formato json.
  • POST /4DSYNC/NomTabla/NomCampo1{,NomCampo2},...
    Integra en la base 4D las modificaciones efectuadas en el cliente.
Nota: el formato utilizado para el intercambio de datos es el JSON (JavaScript Objet Notation). La gramática completa está disponible desde el servicio de soporte técnico de 4D.

Nota:
para que los mecanismos de sincronización se activen, la opción Autorizar el acceso vía los URLs 4DSYNC debe ser seleccionada en la página "Web/Configuración" de las Propiedades de la base (ver a continuación). De lo contrario, las peticiones que contienen el URL 4DSYNC fallarán.

Cuando utilice el URL 4DSYNC/ debe tener en cuenta los siguientes principios:

  • 4D trabaja con la estructura virtual de la base, si existe. En este caso, los parámetros NomTabla y NomCampo corresponden a los nombres de tablas y campos que se han especificado utilizando los comandos SET FIELD TITLES y SET TABLE TITLES. Note que el alcance de estos comandos es la sesión y al utilizar 4D Server debe llamarlos en procedimiento almacenado en el servidor.
  • La replicación de los campos de tipo Blob e Imagen no es soportada.
  • Para poder sincronizar los datos:
    • El servidor HTTP debe lanzarse.
    • La opción Autorizar el acceso a la base de datos vía los URLs 4DSYNC debe estar seleccionada en la página "Web/Configuración" de las Propiedades de la base (ver la sección Seguridad de las conexiones).
    • La propiedad "Activar replicación" debe estar seleccionada para cada tabla donde quiera sincronizar los datos. Si se ha definido una estructura, estas tablas deben incluirse en esta estructura virtual. Advertencia: seleccionar esta opción publica información adicional; debe asegurarse de que el acceso a su base esté protegido (ver la descripción de esta opción en Seguridad de las conexiones).
  • Cuando 4D recibe una petición /4DSYNC, el Método de base On Web Authentication se llama (excepto cuando la contraseña es incorrecta, ver el diagrama de conexión en la sección Seguridad de las conexiones). Si devuelve True, la petición se ejecuta, de lo contrario se rechaza.



Ver también 

Asociar objetos 4D a objetos HTML
WEB GET VARIABLES

 
PROPIEDADES 

Producto: 4D
Tema: Servidor Web

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)