Olá pessoal, eis mais um post sobre ... NodeJS!
Hoje iremos, dentro do tema do último post, abranger ainda melhor o objecto request...
Antes demais, queria deixar bem claro que estes dois últimos posts (o anterior e este que estou a iniciar) foram/são posts que foram dedicados ao objecto Request, visto que é bastante importante entender o comportamento do objecto, como podemos obter informação sobre os pedidos, etc...
... no entanto, haverá uma fase posterior onde iremos começar a aprender a trabalhar com uma framework (ExpressJS) onde iremos ter muito deste trabalho facilitado
Mas depois verão!

Adiante... Hoje iremos ver a propriedade method do objecto Request. Iremos lidar com pedidos feitos por métodos diferentes (POST e GET).
Ponto de Situação do trabalho já realizado:
01 - No tem permisso para visualizar links. Registar ou Login
02 - No tem permisso para visualizar links. Registar ou Login
03 - No tem permisso para visualizar links. Registar ou Login
Objectivo final do post:
Com base em parte do código do tópico anterior (03), iremos fazer com que o WebServer saiba agir quando o pedido é feito por diversos métodos
.Realização:
Primeiro, vamos criar o directório para guardarmos o trabalho.
Tendo em conta a estrutura de directórios criadas no tópico anterior, hoje recomendo criarem o seguinte directório:
mkdir ~/nodeprojects/portugalCode/03-dealingWithMethods/
cd ~/nodeprojects/portugalCode/03-dealingWithMethods/
A nossa pasta do projecto já está criada, então vamos começar a programar. No entanto, como nos vamos basear no código anterior, o melhor será copiar o ficheiro para este directório recém-criado. Na consola isso é feito através dos seguintes comandos:
cp ~/nodeprojects/portugalCode/02-managingRequests/managingRequests.js ~/nodeprojects/portugalCode/03-dealingWithMethods/dealingWithMethods.js
Este comando o que faz é copiar (cp) o ficheiro criado no tópico anterior para a pasta recém-criada renomeando-o para dealingWithMethods.jsEis o estado inicial do ficheiro:
var http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
if( request.url == '/' )
{
response.write('Hello World');
}
else
{
var params = request.url.split('/');
console.log(params);
response.write('Hello ' + decodeURI(params[1]));
}
response.end();
})
.listen(4000);
Ora bem, desta vez, não quero hello worlds... Já chega dessas coisas porque já estamos um passo à frente... Agora, vamos retornar HTML simples
E para testar métodos, nada melhor do que um formulário, certo?Primeiro vamos "limpar" a função de processamento do pedido....
Onde temos:
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
if( request.url == '/' )
{
response.write('Hello World');
}
else
{
var params = request.url.split('/');
console.log(params);
response.write('Hello ' + decodeURI(params[1]));
}
response.end();
})
Passa a:
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
response.end();
})
Pronto.... O cabeçalho a afirmar que o conteúdo é HTML está lá e o término da resposta, também...
Agora vamos programar a resposta de um formulário com um simples botão, só para fazer post

Assim, alteramos para:
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
response.write('<form method="post" action=""><input type="submit" value="Fazer POST" /></form>');
response.end();
})
Simples hum? ;-). Ora se colocarmos o servidor a correr e fizermos um pedido, temos um form com um botão de retorno.
Agora, para detectarmos qual o método a ser usado, temos o request.method. O método poderá ser um dos 4 tipos suportados pelo HTTP 1.1:
- GET
- POST
- PUT
- DELETE
No entanto, como os browsers convencionais não aplicam o protocolo HTTP 1.1, apenas o POST e GET são usados pelos mesmos...
Vamos então apresentar uma mensagem caso o pedido seja feito por método POST :
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
if( request.method == 'POST' )
response.write('<p>Foi feito por POST!</p>');
response.write('<form method="post" action=""><input type="submit" value="Fazer POST" /></form>');
response.end();
})
Gravamos, executamos o servidor... fazemos o pedido e aparece o formulário com o botão, tal como antes... isto porque fizemos o pedido da página por GET... ora vamos então fazer um POST, usando o botão ...
... aí está a mensagem, certo? Certoooo....
Resumindamente, eis aqui o ficheiro completo:
var http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
if( request.method == 'POST' )
response.write('<p>Foi feito por POST!</p>');
response.write('<form method="post" action=""><input type="submit" value="Fazer POST" /></form>');
response.end();
})
.listen(4000);
Bastante simples hum? Sem apaches, htaccess, nem nada do género... puro e simples javascript e NodeJS

Dou por concluído este post, prometendo amanhã mostrar como 'parsamos' os dados enviados por POST... Vai envolver JSON, para além de um outro módulo que não o 'http' ;-).
Abraço e até amanhã

(tipo ao 2º pedido