Bonsai UX
Bonsai UX

UI, Design e User Experience de um ponto de vista zen

Share


Our Newsletter


Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Tags


avrt

Twitter


Pegando requests de URL com Node.js

Nos meus estudos de Node.js deparei-me com um problema: precisava saber se uma URL retornava página inexistente (o famoso erro 404), no caso, um request para o…

Poe BellentaniPoe Bellentani

Nos meus estudos de Node.js deparei-me com um problema: precisava saber se uma URL retornava página inexistente (o famoso erro 404), no caso, um request para o API do Gravatar.

Procurei como fazer, fui atrás e como noob que sou nisso apanhei um bocado.

Dezenas de URLs do stackoverflow, documentação do Node.js e mais um bocado de tutoriais, tive o insight de buscar no Google “Node.js request” e o primeiro resultado foi o Request, um módulo simples e fantástico: ele resolveu meu problema e também abriu um absurdo de possibilidades.

Olhem o código abaixo:

app.js

//====================
//  CHAMA OS MODULOS
//====================
var express = require('express');
var request = require('request'); // trata request
var app = express();

//===================
//     MIDDLEWARE
//===================
//levanta o server
app.set('port', process.env.PORT || 5000);

//===================
//  ROTAS DO EXPRESS
//===================

//rota de acerto - localhost:5000/acerto
app.get('/acerto', function(req, res) {
  var urlTest = 'http://bonsaiux.com.br';

  request(urlTest, function (error, response) {
    //verificar se o gravatar existe - se ele não existe vai retornar 404 devido ao parametro passado ao api
    if (!error && response.statusCode == 200) {
      console.log('status é ok, achou');
      res.send('<h1>Status é ok, achou</h1> <p>Impresso na tela '+response.statusCode+'</p>');
    } else if (!error && response.statusCode == 404) {
      console.log('deu 404');
      res.send('<h1>Não achou nada. :(</h1> <p>Impresso na tela '+response.statusCode+'</p>');
    }
  });
});

//rota de erro - localhost:5000/erro
app.get('/erro', function(req, res) {
  var urlTest = 'http://bonsaiux.com.br/erro404';

  request(urlTest, function (error, response) {
    //verificar se o gravatar existe - se ele não existe vai retornar 404 devido ao parametro passado ao api
    if (!error && response.statusCode == 200) {
      console.log('status é ok, achou');
      res.send('<h1>Status é ok, achou</h1> <p>Impresso na tela '+response.statusCode+'</p>');
    } else if (!error && response.statusCode == 404) {
      console.log('deu 404');
      res.send('<h1>Não achou nada. :(</h1> <p>Impresso na tela '+response.statusCode+'</p>');
    }
  });
});

//Exibe a porta e avisos do app
app.listen(app.get('port'), function() {
  console.log('Node está brincando na porta ' + app.get('port'));
});

Se você quer verificar se uma imagem, URL, vídeo ou qualquer outro tipo de arquivo está disponível online, utilizando o tipo de resposta que a URI dele devolve, então este é o módulo que vocês precisam.

Instalar ele é fácil e a documentação está lá no site. :)

Para testar acesse:

Fiz uma busca específica sobre ele e achei alguns tutoriais online que expandem sua documentação:

http://blog.modulus.io/node.js-tutorial-how-to-use-request-module

Se vocês conhecerem outras formas de fazer isso, sendo com módulos, de forma nativa ou até mesmo usando o Express.js, por favor, deixe nos comentários.

Estou compartilhando aqui minha caminhada no Node.js, como iniciante, acho válido dividir os problemas e soluções que vou encontrando - mesmo que não sejam as melhores. :)

P.S.: Para baixar o código é só entrar lá no Github que eu publiquei ele pra quem interessar.

Comments