Postmon - Consumindo uma API com Ruby
Publicado por Daniel Vinciguerra (última atualização em 20/09/2016)
[ Hits: 5.501 ]
Homepage: http://bivee.com.br
Aviso:
- Não utilize esta implementação em produção, ela vem apenas a ser uma implementação didática para mostrar uma das formas de se consumir APIs utilizando o Ruby.
- Caso sinta interesse e precise utilizar o Postmon em seu projeto, veja uma implementação mais madura no link: https://rubygems.org/gems/postmon_ruby
INTRODUÇÃO
Sabe quando você encontra uma API, e gostaria de consumir os dados dela para utilizar em seu projeto?
Aqui eu vou mostrar como você pode criar uma classe e consumir uma API de forma bem simples para utilizar no seu projeto.
Esta será uma implementação muito simples com um foco especial em mostrar como obter a informação, realizar um parse e exibir os dados retornados.
Vamos utilizar para este exemplo o Postmon que é um projeto open-source de uma API para obter dados de localização e endereçamento escrita em Python e MongoDB.
- Site oficial do Postmon: http://postmon.com.br
- Link para o github: https://github.com/PostmonAPI/postmon
*parabéns ao pessoal do projeto a propósito*
PRÉ-REQUISITOS
- ruby +2.2
- Módulo open-uri e nokoguiri instalados
REFERÊNCIAS
http://ruby-doc.org/stdlib-2.2.0/libdoc/open-uri/rdoc/OpenURI.html
https://rubygems.org/gems/nokogiri
EXECUTANDO
$ ruby postmon.rb
#!/usr/bin/env ruby # 2016 (c) Daniel Vinciguerra require 'json' require 'open-uri' require 'nokogiri' module Postmon # endereço base da api BASE_URI = "http://api.postmon.com.br/v1" # classe da api class API attr_accessor :entity # obtém e retorna os dados do cep def by_cep(value) begin open(uri_to("/cep/#{value}")) do |res| entity = Postmon::API::Entity.new; entity.parse(res.readlines.join) end rescue Exception => e puts "Erro ao retornar os dados do CEP! (#{e.message})" exit end end private # constroi a url def uri_to(uri) URI(URI::encode("#{BASE_URI}/#{uri}")) end end # classe da entidade (retorno da API) class API::Entity attr_reader :bairro, :cidade, :cep, :logradouro, :estado, :estado_info, :cidade_info # parseia as informações def parse(json) o = JSON::parse(json) @cep = o["cep"] @bairro = o["bairro"] @cidade = o["cidade"] @estado = o["estado"] @logradouro = o["logradouro"] @estado_info = o["estado_info"] @cidade_info = o["cidade_info"] self end end end # objeto do nosso client da API postmon = Postmon::API.new # obtendo os dados do cep location = postmon.by_cep('13330000') # imprimindo as informações do cep puts "INFORMAÇÕES PARA O CEP #{location.cep}" puts "=" * 60 puts "Rua : #{location.logradouro}" if location.logradouro puts "Bairro: #{location.bairro}" if location.bairro puts "Cidade: #{location.cidade}" puts "Estado: #{location.estado}"
Faça uma lista com o nome de pessoas
Shoes - GUIfique scripst em ruby
Título: Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Site da gontijo simplesmente não abre, ERR_HTTP2_PRO... (0)
Linux Mint não conecta Wi-Fi sem fio (19)
mailreport não salva Configurações (2)