Crie uma app de meteorologia em menos de 5 minutos
Ser programador é ter desafios constantes com o objetivo de solucionar problemas. No entanto, atualmente, existe também já muito código feito que facilmente podemos adaptar e encaixar nos nossos projetos.
Por outro lado, podemos também fazer uso de APIs com o objetivo de aproveitar serviços já existentes. Depois de ensinarmos a criar uma app de meteorologia usando Node.js e a API OpenWeatherMap hoje vamos ver como podemos formatar o output.
Como vimos neste tutorial, usando Node.js e a API OpenWeatherMap facilmente podemos obter a informação meteorológica de uma determinada cidade. No entanto, no nosso exemplo, o output é apresentado em JSON o e, nesse sentido, é necessário "formatar" a informação.
Para tal, podemos usar no Node.js a função JSON.parse e aplicar ao output que é obtido em JSON e assim obter os campos que pretendemos. Por exemplo, vamos considerar que pretendemos saber a temperatura, humidade e pressão atmosférica para a cidade da Guarda.
Para começar vamos passar o output em JSON para um objeto JavaScript. Para tal basta que use a seguinte linha de código:
let weather = JSON.parse(body) |
Agora que temos a informação num objeto JavaScript, podemos aceder individualmente a dados contidos nesse objeto como, por exemplo, a temperatura, humidade, etc.
Por exemplo, se pretendermos escrever apenas a temperatura basta usar o seguinte código:
let dados = `Temperatura para a ${weather.name}: ${weather.main.temp}º`; console.log(message); |
Vamos agora considerar um exemplo mais completo, que irá escrever a Temperatura e Humidade para a cidade definida. O código será o seguinte:
Executando o comando node index.js o output será o seguinte:
E basicamente é isto! Com esta informação podemos criar outro tipo de app, com uma interface mais evoluída ou até um site com esta informação. Com o nodeJS é muito simples criar um servidor Web e publicar a informação - podem ver aqui como fazer.
Leia também...
Este artigo tem mais de um ano
Bom artigo. Deixo algumas sugestões:
1. Usar const em vez de let
2. Usar request-promise, axios ou fetch com async/await (evitar callbacks)
3. Usar try/catch com JSON.parse
4. Colocar uma nota sobre as melhores praticas em relação a api keys (ou qq informacao mais sensivel), recorrendo, por exemplo, a environment variables. (seja pelo SO, ou melhor ainda, usando dotenv)
Acrescento que a biblioteca request (e maioria delas) tem pode receber opcções no primeiro parametro (objecto) onde se pode colocar a flag json: true, e evita-se ter de usar JSON.parse
coloca aqui uma versão com as tua alterações para o pessoal ver as diferenças.
aqui tens: https://pastebin.com/qe49FrQZ
obrigado, era de valor o pessoal do Pplware aproveitar o teu exemplo e incorporar no artigo.
Isto é como tudo, há N formas de resolver o mesmo problema. O código do artigo funciona, apenas apresentei sugestões, umas mais relevantes que outras.
Eu quando comecei a aprender nodejs também não seguia todas as “melhores práticas” mas acho que aqui tem vários pormenores que não ajudam: usar let onde devia ser const, parse desnecessário e apikey no meio do código.
Este ultimo ponto é bastante importante porque é assim que muitos destes dados vão parar a quem não devia; o pessoal pega neste código, cria um repositório publico no github e lá se foi a apikey.