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.

[ Hits: 56.318 ]

Por: Zendrael em 04/07/2012


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.

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":
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:

procedure TFPWebModule1.acao1Request(Sender: TObject; ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
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;

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!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparando o ambiente
   3. Criando o primeiro CGI
   4. Tratando parâmetros e formulários
   5. Conclusão
Outros artigos deste autor

Introdução ao PHP-GTK

Pascal para Web com CGI - Parte II

Leitura recomendada

Pascal para Web com CGI - Parte II

Configurando o Apache para executar CGIs em Kylix

Criando uma aplicação Kylix com PostgreSQL usando Zeos (parte 3)

Como garantir compatibilidade entre Kylix e Delphi

Como imprimir diretamente na porta de impressão

  
Comentários
[1] Comentário enviado por rony_souza em 04/07/2012 - 20:59h

MUITO BOA DICA AMIGO!!!

BELA POSTAGEM....


[2] Comentário enviado por zendrael em 05/07/2012 - 09:21h


[1] Comentário enviado por Scyther Kazpor em 04/07/2012 - 20:59h:

MUITO BOA DICA AMIGO!!!

BELA POSTAGEM....



Obrigado Scyther!
Aguarde a segunda parte em breve!
Até +

[3] Comentário enviado por gibroh@hotmail.c em 03/10/2012 - 21:34h

Excelente Artigo !!

[4] Comentário enviado por ivomar em 29/01/2015 - 16:52h


Excelente artigo!

Obs: quando executo meu cgi ele tenta fazer download. Alguma dica?

[5] Comentário enviado por zendrael em 29/01/2015 - 22:16h


[4] Comentário enviado por ivomar em 29/01/2015 - 16:52h


Excelente artigo!

Obs: quando executo meu cgi ele tenta fazer download. Alguma dica?


Oi ivomar!

Confira as configurações do seu apache e do diretório cgi-bin.

Obrigado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts