O servidor web 4D oferece diferentes URLs e ações de formulários HTML especiais que permitem implementar diferentes ações em seu banco. Essas URLs são as seguintes:
4DACTION/, para associar um objeto HTML a um método de projeto de su banco,
Adicionalmente, o servidor web 4D aceita várias URLs adicionais:
/4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR e /4DWEBTEST, para permitir-lhe obter informação sobre o funcionamento de seu site Web 4D. Essas URLs são descritas na seção Informação sobre o Website.
/4DWSDL, permite o acesso ao arquivo de declaração dos Serviços web publicados no servidor. Para maior informação, consulte a seção Comandos de Serviços Web (Servidor) e o Manual de Disenho.
Esta URL permite associar um objeto HTML (texto, imagem, botão...) a um método de projeto 4D. Este link será do tipo /4DACTION/MeuMetodo/Param onde MeuMétodo é o nome do método de projeto 4D a ser executado quando o usuário clicar no link e Param um parâmetro opcional de tipo Texto passado ao método em $1 (ver o parágrafo “Os parâmetros Texto passados a os métodos através os URLs”).
Quando 4D recebe uma petição /4DACTION/MeuMetodo/Param, se chama o método de banco On Web Authentication Database Method (se existir). Se retorna True, se executa o método MeuMétodo. 4DACTION/ pode estar associado a uma URL em uma página web estática. A sintaxe da URL deve ser desta forma:
<A HREF="/4DACTION/MeuMetodo/Param"> Fazer algo</A>
O método de projeto MeuMétodo geralmente deve devolver uma "resposta" (envio de página HTML utilizando WEB SEND FILE ou WEB SEND BLOB, etc.). Tenha certeza de fazer os processos tão curtos quanto possível para não bloquear o navegador.
Nota: um método chamado por 4DACTION não deve chamar aos elementos de interface (DIALOG, ALERT...).
Advertência: para que um método 4D possa ser executado através da URL 4DACTION/, deve ter o atributo “Disponível através 4DACTION, 4DMETHOD e 4DSCRIPT” (deselecionado por padrão), definido nas propriedades do método. Para maior informação sobre este ponto, consulte a seção Conexões de Segurança.
Este exemplo descreve a associação da URL 4DACTION/ com um objeto HTML imagem com o objetivo de mostrar dinamicamente uma imagem na página. Insira a seguinte instrução em uma página HTML estática:
<IMG SRC="/4DACTION/IMAGENDESDELIB/1000">
O método PICTFROMLIB é o seguinte:
C_TEXT($1) // Este parâmetro deve ser declarado sempre C_PICTURE($PictVar) C_BLOB($BlobVar) C_LONGINT($Number) // Recuperamos o número de imagem na string $1 $Number:=Num(Substring($1;2;99)) GET PICTURE FROM LIBRARY($Number;$PictVar) PICTURE TO BLOB($PictVar;$BlobVar;".gif") WEB SEND BLOB($BlobVar;"Pict/gif")
O servidor web 4D oferece uma possibilidade adicional quando utiliza formulários “enviados”, os quais são páginas HTML estáticas que enviam dados ao servidor web. A ação do formulário deve obrigatoriamente começar por /4DACTION/NomeMetodo.
Nota: Um formulário pode ser enviado através de dois métodos (ambos podem ser utilizados com 4D):
POST, geralmente utilizado para adicionar dados ao servidor web, em um banco de dados,
GET, geralmente utilizado para fazer petições ao servidor web, dados que venham de um banco.
Neste caso, quando o servidor web recebe um formulário enviado, chama ao método de projeto COMPILER_WEB (se existir, ver abaixo), depois chama ao On Web Authentication Database Method (se existir). Se retorna True, se executa o método NomeMetodo. Neste método, deve chamar o comando WEB GET VARIABLES para recuperar os nomes e valores de todos os campos incluidos na página HTML enviada ao servidor.
Nota de compatibilidade: Em bancos de dados convertidos, se a opção "Automatic variable assignment" em Página Compatibilidade estiver marcada, o método de projeto especial COMPILER_WEB é chamado primeiro (se existir); 4D recupera os valores dos campos HTML encontrados no formulário e automáticamente preenche as variáveis 4D no método chamado com seus conteúdos se eles tiverem o mesmo nome. Esse funcionamento é obsoleto. Para saber mais veja Binding 4D objects with HTML objects.
A sintaxe HTML a aplicar no formulário é do seguinte tipo:
Em um banco web 4D, queremos que os navegadores possam buscar registros utilizando uma página estática HTML. Esta página se chama “buscar.html”. O banco contém outras páginas estáticas que lhe permitem, por exemplo, mostrar o resultado da pesquisa (“resultados.html”). O tipo POST foi associado a página, assim como a ação /4DACTION/SEARCH. Este é o código HTML que corresponde a esta página:
<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST><INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR>
<!-- Geralmente colocamos o nome do botão em VALUE, por razões de interpretação, você deve colocar um número em VALUE-->
<INPUT TYPE=CHECKBOX NAME=EXACT VALUE="1">Palavra completa<BR>
<!-- OK é um caso particular-->
<INPUT TYPE=SUBMIT NAME=OK VALUE="Search">
</FORM>
Durante a entrada de dados, escreva “ABCD” na área de entrada de dados, revise a opção e confirme-a clicando no botão Pesquisar. 4D depois chama ao método de projeto COMPILER_WEB, que é o seguinte:
C_TEXT($1) //obrigatório para modo compilado C_LONGINT($vName) C_TEXT(vNAME;vLIST) ARRAY TEXT($arrNames;0) ARRAY TEXT($arrVals;0) WEB GET VARIABLES($arrNames;$arrVals) //recupera todas as variáveis do formulário $vName:=Find in array($arrNames;"vNAME") vNAME:=$arrVals{$vName} If(Find in array($arrNames;"vEXACT")=-1) //Se a opção não tiver sido marcada 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") //Envia a lista para o formulário results.htm //que contém a referência para a variável vLIST, //por exemplo <!--4DHTML vLIST--> //... End if
A URL 4DCGI/ URL não corresponde a nenhum arquivo. Seu papel é chamar 4D utilizando o Método de banco de dados On Web Connection. O parâmetro “<action>” pode conter todo tipo de informação.
Esta URL lhe permite efetuar todo tipo de ação. Só necessita testar o valor de $1 no Método de banco de dados On Web Connection ou em um de seus submétodos e realizar em 4D a ação apropriada. Por exemplo, pode criar páginas HTML estáticas totalmente personalizadas para adicionar, buscar, ou ordenar registros, ou gerar imagens GIF rapidamente. Exemplos de como utilizar este URL se encontram nas descrições dos comandos PICTURE TO BLOB e WEB SEND HTTP REDIRECT Depois de uma ação, deve ser devolvida uma “resposta”, utilizando um dos comandos de envio de dados (WEB SEND FILE, WEB SEND BLOB, etc.).
Advertência: tenha certeza de executar as ações mais curtas possíveis, com o fim de não bloquear o navegador.
4D envia os parâmetros de Texto aos métodos 4D chamados pelos URLs especiais (4DACTION/ e 4DCGI/), em modos contextual e não-contextual aqui algumas observações sobre esses parâmetros:
Mesmo que não utilize esses parâmetros, deve declará-los explicitamente com o comando C_TEXT, do contrário se produzirão erros de runtime quando acessar por web a um banco executado em modo compilado. A mensagem é do tipo "Erro em código dinâmico Parâmetro inválido em um comando EXECUTE Nome do Método: Número da Linha: Descrição: [<data e hora>] Este erro runtime se produz pela ausência da declaração do parâmetro texto $1 no método 4D chamado ao fazer clic no link HTML. Como o contexto da execução é a página HTML atual, o erro hace referência a a linha "0" do método que enviou a página ao navegador web. Declarar explicitamente o parâmetro texto $1 permite eliminar esses erros:
//método de projeto M_SEND_PAGE C_TEXT($1) // Este parâmetro DEVE ser declarado explicitamente //... WEB SEND FILE($mypage)
O parâmetro $1 retoran os dados extra colocados no final da URL, e pod ser usado como um placeholder (valor temporário) para passar valores do ambiente HTML para o ambiente 4D.
` Método base On Web Connection C_TEXT($1;$2;$3;$4;$5;$6) `Estos parámetros deben declararse explícitamente
Método chamado pela URL 4DACTION/ Deve declarar o parâmetro $1:
//Método chamado pela URL 4DACTION/ C_TEXT($1)
Método chamado pela etiqueta 4DSCRIPT/ como uma comentário HTML em um documento O método deve retornar o valor em $0. Você deve declarar o parâmetro $0 e $1 :
//Método chamado pela tag 4DSCRIPT/ como um comentário HTML C_TEXT($0;$1) //Esses parâmetros DEVEM ser declarados explicitamente