¡Esta es una revisión vieja del documento!
El objeto oCGI sera el encargado de realizar las comunicaciones entre Apache y nuestra Aplicación, al instanciarlo con
oCgi := TCgi():New()
inicializa la conexión con Apache y se trae a nuestra aplicación todos los parámetros de la llamada realizada desde el navegador (por POST, GET o como URL Amigable), los cookies activos en la sesión y las variables de Apache.
Como el oCGI es un MEMVAR que esta definido en Nefele.ch puede hacerse referencia a el desde cualquier parte de nuestra aplicación.
Nombre | Init | Descripción | Versión |
---|---|---|---|
aCookies | Array de las cookies recibidas. | 0.1 | |
aParams | Array de los parámetros recibidos. | 0.1 | |
aParamShared | {} | aParams que serán añadidos a todos los controles que realicen llamas al CGI | 0.3 |
aRoutes | Array con las rutas envidas como URL amigable. | 0.1 | |
cFunction | “FUNCTION” | Nombre de la propiedad que recibimos que contendrá la función a llamar de nuestro CGI, todos controles que generan llamadas le asignaran este nombre a la propiedad. | 0.1 |
cFunctEndCookie | Función a ejecutar cuando se recibe un cookie caducado. | 0.1 | |
cMainFunction | “MainFunction” | Método del oCGI que sera llamada por defecto si no se indica otra | 0.1 |
cPathTmp | “.\tmp” | Carpeta temporal que utilizara nuestro CGI, por ejemplo para guardar los ficheros adjuntos | 0.1 |
cSameSitePolicy | “lax” | Protección de cookies (info) | 0.3 |
lGetData | .t. | Admitimos parámetros pasados por GET | 0.1 |
lGetFunction | .t. | Admitimos funciones pasadas por GET | 0.1 |
lCheckNavigator | .t. | Comprobamos compatibilidad del navegador cliente | 0.1 |
lSendTTFB | .t. | Adjunta al final del HTML, enviado como respuesta, los milisegundos desde la llamada como un comentario, solo funciona en modo Debug | 0.1 |
lMsgSavePage | .f. | Nos graba en el fichero “SendPage.html” dentro de la carpeta cgi-bin de Apache, el código Html que se va ha enviar en SendPage(), muy útil para depurar el código que se enviara al navegador, solo valida en modo Debuger. Cuando enviamos con SendScript() se guarda en SendScript.html y con SendJSon() como SendJSon.html | 0.3 |
nDuracionCookie | Duración de los cookies por defecto. | 0.1 | |
nRequestMode | Modo de llamada recibida desde el navegador ver valores posibles en Constantes | 0.1 |
Como ya comentamos antes solo son admitidas como llamadas a funciones de nuestro programa desde el navegador, las que correspondan con métodos de la clase TCgi, por lo que tendremos que crearnos nuestro enrutador sobrecargando la clase TCgi.
Podemos aprovechar dicha sobrecarga para definir también alguna de las propiedades de oCGI.
CLASS TCgi FROM XCgi PROPERTY lGetData INIT .f. METHOD MainFunction() INLINE Menu() METHOD inicio() INLINE Menu() METHOD pruebaspedro() INLINE PruebasPedro() METHOD visparam() INLINE VisParam() METHOD visparam2() INLINE VisParam( .T. ) METHOD apachevars() INLINE ApacheVars() METHOD holamundo() END CLASS
En este ejemplo utilizamos la técnica de tener nuestras PROCEDURE y mediante la clausula INLINE realizar el enrutamiento de las llamadas hacia dichas PROCEDURE, incluso haciendo dos llamadas al mismo PROCEDURE con parametros distintos dependiendo del método del oCGI llamado.
También podemos desarrollar los métodos de la clase TCgi.
METHOD holamundo() CLASS TCgi WITH OBJECT TWebPage():New() . . . oCGI:SendPage(:Create()) END WITH RETURN Nil
Si utilizamos el NéfeleWizard para montar la estructura inicial de nuestra aplicación, este nos creara un enrutador básico en Main.prg, justo debajo del PROCEDURE CGI_Init() que es donde se instancia la clase TCgi asignándola a oCGI y se inicia con oCGI:Run().
Comentarios oCGI