Si quieres suscribirte al feed RSS del blog, este es el canal por defecto: http://www.sirius06.es/feed/
HOYGAN HAMIJOS!!!

Consumiendo Web Services con RoR

13/10/2009

Hace unos meses tenía entre manos una aplicación que consumía Web Services de una API que servía la información en varios formatos (XML, YAML, texto plano y PHP serializado -entre otros-). Para ello se ideó un proceso que con el tiempo se vio que era bastante chapucero, pues se basaba en varias peticiones HTTP y la escritura de su resultado en archivos temporales. Debido a ello, en ocasiones el rendimiento caía en picado, cosa que pasaba hasta que descubrí la forma correcta de manejar este flujo de datos:

Web Services

  1. def get_data(data_url)
  2.   begin
  3.     url = URI.parse(data_url)
  4.     res = Net::HTTP.get_response(url)
  5.     YAML.load(res.body)
  6.   rescue Exception => e
  7.     Rails.logger.error "ERROR: #{e}"
  8.     false
  9.   end
  10. end

Nueve sencillas líneas de código es lo único que necesitamos para lograr este objetivo. Primero, lo encapsulamos todo en un bloque que pueda capturar una posible excepción (”begin [...] rescue“). En la primera parte del mismo obtenemos el contenido y lo parseamos con la herramienta correspondiente al formato de salida que elijamos (YAML en este caso). En la segunda, guardamos en el log el nombre del problema ocurrido y devolvemos “false“.

Comentarios:

  • Aquí no comenta ni Dios, ¿quieres ser tú el primero?

Di algo:

Smilies: :D ≈confused≈ ≈cool≈ ≈cry≈ ≈down≈ :O ≈wings≈ ≈!≈ ≈halo≈ ≈love≈ ≈kiss≈ ≈happy≈ ≈mad≈ ≈$≈ ≈puaj≈ ≈silence≈ ≈pirate≈ ≈hmm≈ :P ≈ups≈ ≈bff≈ :( :) >_< o_O ≈up≈ ≈bad≈ ;)
Notas:
  • *: Campo requerido.
  • HTML desactivado.