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,
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 QR SET HTML TEMPLATE.
/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 SEND HTML 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 ofrece una posibilidad adicional cuando utiliza formularios “enviados”, los cuales son páginas HTML estáticas que envían datos al servidor web. 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 proyecto COMPILER_WEB (si existe, ver a continuación), luego llama al Método de base On Web Authentication (si existe). Si devuelve True, se ejecuta el método NomMetodo. 4D analiza los campos HTML presentes en el formulario, recupera sus valores y llena automáticamente las variables 4D con sus contenidos. El campo en el formulario y la variable 4D deben tener el mismo nombre.
También puede utilizar el comando WEB GET VARIABLES, para recuperar los nombres y valores de todos los campos incluidos en una página HTML enviada al servidor.
Para cada campo en el formulario, 4D define el valor del campo para el valor de la variable con el mismo nombre. Para las opciones de formularios (por ejemplo, casillas de selección), 4D asigna el valor 1 a la variable asociada si está seleccionada, de lo contrario 0. Para las entradas de tipo numérico, 4D convierte el valor del campo de Alfa–>Numérico.
Nota: si un campo de formulario se llama OK (por ejemplo un botón Enviar), la variable sistema OK toma el valor 1 si el valor del campo no está vacío, de lo contrario toma el valor 0.
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:
<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST>
<INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR>
<!-- Por lo general ponemos el nombre del botón en VALUE, por razones de interpretación, debe poner un número en VALUE-->
<INPUT TYPE=CHECKBOX NAME=EXACT VALUE="1">Palabra completa<BR>
<!-- OK es un caso particular-->
<INPUT TYPE=SUBMIT NAME=OK VALUE="Search">
</FORM>
Durante la entrada de datos, escriba “ABCD” en el área de entrada de datos, revise la opción y valídela haciendo clic en el botón Buscar. 4D luego llama al método de proyecto COMPILER_WEB, que es el siguiente:
En el ejemplo, vNOMBRE contiene la cadena “ABCD”, vEXACTA es igual a 1 y OK es igual a 1 (porque el nombre del botón es OK). 4D llama al Método de base On Web Authentication (si existe), luego se llama al método de proceso PROCESARFORM, que es el siguiente:
If(OK=1) If(vEXACTA=0) // Si la opción no ha sido seleccionada vNOMBRE:=vNOMBRE+"@" End if QUERY([Jockeys];[Jockeys]Nombre=vNOMBRE) vLIST:=Char(1) // Devuelve la lista en HTML FIRST RECORD([Jockeys]) While(Not(End selection([Jockeys]))) vLIST:=vLIST+[Jockeys]Nombre++[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 (that is <!--4DVAR vLIST––>)
... End if
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, SEND HTML 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 "Un error runtime ocurrió en la línea: 0 durante la ejecución del método * ON WEB CONNECTION. Parámetro inválido en un comando Ejecutar". Este error runtime se produce por la ausencia de la declaración del parámetro texto $1 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 hace referencia a la línea "0" del método que envió la página al navegador web. Declarar explícitamente el parámetro texto $1 permite eliminar estos errores:
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)
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.