Pascal para Web com CGI - Parte I
Vamos ver como é fácil programar para Web com Pascal através de CGI. Recomendo àqueles que curtem a linguagem e nunca se viram programando para Web com ela, ou gostariam de aproveitar seu conhecimento para atuar com aplicações Web e/ou sites.
Parte 3: Criando o primeiro CGI
Hora de iniciarmos nosso projeto! Vá em: Project -> New project
Na janela de seleção de projetos, escolha "CGI Application". Com isso teremos em nossa tela um WebModule e o editor de códigos, juntamente com o Object Inspector que nos auxiliará a criar os eventos que nosso CGI vai receber e tratar.
São alguns simples passos para que possamos, então, ver nossa primeira aplicação Web em funcionamento:
Selecione o "WebModule" e vá ao "Object Inspector". Nele, clique nos "..." que aparecem na frente do item "Actions":
Na janela que abrir, adicione uma ação clicando no botão "Add".
Com o item recém criado selecionado, volte ao Object Inspector e altere sua propriedade "Name" para "acao1". Vá na aba "Events do Object Inspector" e dê um duplo clique no item "OnRequest".
A janela de edição de código será ativada e será criado automaticamente o procedimento a seguir:
Dentro deste procedimento vamos criar o retorno HTML do CGI quando a ação "acao1" for chamada. Devemos determinar qual o tipo de retorno (normalmente text/html) e o que for adicionado depois disso já será interpretado pelo navegador, desde texto comum até tags HTML, códigos CSS e JavaScript.
Vamos alterar para o seguinte:
Note que utilizamos a variável "AResponse" para gerar o nosso retorno. Esta é a maneira pela qual o FPWeb trabalha. Tudo o que for alterado nesta variável será interpretado pelo navegador quando for retornado automaticamente ao final da execução da rotina.
O Handled garante que tudo foi executado e o processo pode ser concluído liberando memória no servidor.
Hora de salvar o projeto no local de sua preferência. Lembrando que o nome do projeto tem que ser diferente do nome da Unit principal. Aqui vou chamar apenas de "projeto" e a Unit principal de "main".
Feito isso, vamos compilar somente com: Run > Build.
Se houver algum problema, sugiro que volte aos passos anteriores.
Tenha certeza de que seu servidor está rodando e dê permissão 755 para o seu executável. Não se assuste com o tamanho do binário! O Lazarus salva informações de debug com ele que podem ser retiradas, depois diminuindo o tamanho.
Abra o navegador de sua preferência e acesse:
Aê! Funcionou! Seu primeiro CGI com Object Pascal está funcionando!
O leitor deve ter notado que após o nome do projeto, é colocada uma "/", e em seguida o nome da ação que foi definido anteriormente.
É possível criar N ações diferentes e até N WebModules para sua aplicação ou site. Tudo dependerá da complexidade do que for fazer.
E pela variável "AResponse", podemos gerar quase qualquer tipo de conteúdo, carregar arquivos HTML, imagens etc.
Mas há também uma tal "ARequest"... O que ela faz?
Se chegou até aqui com tudo funcionando, hora dos próximos passos!
Na janela de seleção de projetos, escolha "CGI Application". Com isso teremos em nossa tela um WebModule e o editor de códigos, juntamente com o Object Inspector que nos auxiliará a criar os eventos que nosso CGI vai receber e tratar.
Hello World para a Web
Para o nosso "Hello World" funcionar, temos que criar uma ação que será chamada em nosso CGI. Esta ação é quem vai gerar uma resposta e retornar para o servidor para que seja exibida no browser.São alguns simples passos para que possamos, então, ver nossa primeira aplicação Web em funcionamento:
Selecione o "WebModule" e vá ao "Object Inspector". Nele, clique nos "..." que aparecem na frente do item "Actions":


A janela de edição de código será ativada e será criado automaticamente o procedimento a seguir:
procedure TFPWebModule1.acao1Request(Sender: TObject; ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
begin
end;
begin
end;
Dentro deste procedimento vamos criar o retorno HTML do CGI quando a ação "acao1" for chamada. Devemos determinar qual o tipo de retorno (normalmente text/html) e o que for adicionado depois disso já será interpretado pelo navegador, desde texto comum até tags HTML, códigos CSS e JavaScript.
Vamos alterar para o seguinte:
procedure TFPWebModule1.acao1Request(Sender: TObject; ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
begin
//tipo de resposta (header)
AResponse.ContentType:= 'text/html';
//conteúdo a ser mostrado
AResponse.Content:= '<h1>Olá Web!</h1>';
//informa o CGI de que a ação foi realizada
Handled:= True;
end;
begin
//tipo de resposta (header)
AResponse.ContentType:= 'text/html';
//conteúdo a ser mostrado
AResponse.Content:= '<h1>Olá Web!</h1>';
//informa o CGI de que a ação foi realizada
Handled:= True;
end;
Note que utilizamos a variável "AResponse" para gerar o nosso retorno. Esta é a maneira pela qual o FPWeb trabalha. Tudo o que for alterado nesta variável será interpretado pelo navegador quando for retornado automaticamente ao final da execução da rotina.
O Handled garante que tudo foi executado e o processo pode ser concluído liberando memória no servidor.
Hora de salvar o projeto no local de sua preferência. Lembrando que o nome do projeto tem que ser diferente do nome da Unit principal. Aqui vou chamar apenas de "projeto" e a Unit principal de "main".
Feito isso, vamos compilar somente com: Run > Build.
Se houver algum problema, sugiro que volte aos passos anteriores.
Testando o CGI
Agora é hora de testar nosso CGI e verificar seu retorno. Copie o executável gerado do local onde salvou seu projeto e coloque na pasta cgi-bin do seu servidor.Tenha certeza de que seu servidor está rodando e dê permissão 755 para o seu executável. Não se assuste com o tamanho do binário! O Lazarus salva informações de debug com ele que podem ser retiradas, depois diminuindo o tamanho.
Abra o navegador de sua preferência e acesse:
- http://127.0.0.1/cgi-bin/projeto/acao1
Aê! Funcionou! Seu primeiro CGI com Object Pascal está funcionando!
O leitor deve ter notado que após o nome do projeto, é colocada uma "/", e em seguida o nome da ação que foi definido anteriormente.
É possível criar N ações diferentes e até N WebModules para sua aplicação ou site. Tudo dependerá da complexidade do que for fazer.
E pela variável "AResponse", podemos gerar quase qualquer tipo de conteúdo, carregar arquivos HTML, imagens etc.
Mas há também uma tal "ARequest"... O que ela faz?
Se chegou até aqui com tudo funcionando, hora dos próximos passos!
BELA POSTAGEM....