Conhecendo o Node.js #2

Olá novamente bípedes.

Continuando a série(!?) de posts sobre Node.js, falarei hoje sobre os parâmetros enviados por URLs e como utilizá-los no javascript. Será um post curto e simples, mas possivelmente útil.

Muito bem, como vimos no post anterior, o Node.js utilizao o CommonJS para separar e modularizar seus arquivos de forma organizada. Portanto, para termos acesso aos métodos de tratamento de URLs, devemos incluir o módulo ‘url’:

var url = require("url");

Com o módulo url em mãos, podemos utilizar seus métodos para recuperar os parâmetros da URL:

var params = url.parse(urlString, true).query;

Aqui, o método parse transforma os TODA a URL em um objeto. Neste exemplo, ele recebe dois parâmetros:

  1. A própria URL em forma de string;
  2. Um boolean que define se os parâmetro e valores da URL serão mostrados no objetos que o método irá retornar.

O método parse retorna um objeto que tem atributos como path, rost, port e claro, os parâmetros da URL(se o segundo parâmetro for true). Um exemplo do objeto:

{ 
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?Numero=5&Nome=Jean',
  query: { Numero: '5', Nome: 'Jean' },
  pathname: '/',
  path: '/?Numero=5&Nome=Jean',
  href: '/?Numero=5&Nome=Jean' 
}

Como só precisamos dos parâmetros passados pela URL nesse momento, requisitamos apenas o atributos query do objeto retornado. Assim, temos todos os parâmetros em um objeto, facilmente manipulável:

var nome = params.Nome;
var numero = params.Numero;

É importante lembrar que tudo isso é case-sensitive. Se eu chamar localhost/?NumBeR=5, o atributo no javascript será o mesmo ou seja, params.NumBeR.

Dito tudo isso, aqui vai um exemplo simples de tudo mencionado acima:

var http = require("http");
var url = require("url");

http.createServer(function (request, response)
{
    response.writeHead(200, { "Content-Type": "text/plain" });

    var params = url.parse(request.url, true).query;
    var nome = params.Nome;

    response.write("May the force be with you, " + nome);

    response.end();
}).listen(80);

console.log("Rodando...");
Anúncios

Tags:,

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: