scotch rails practices how create crear con best ruby-on-rails xml json api

ruby-on-rails - practices - rails api scotch



¿Interfaz con una API de terceros en Rails?(Abre las URL y analiza XML/JSON) (2)

En un mundo perfecto, ya existe una gema para la API que desea utilizar, y simplemente usaría eso. De lo contrario, tienes algunas opciones:

Parsing JSON es generalmente muy sencillo. Para XML, como se indica en otra respuesta, Nokogiri es probablemente el camino a seguir.

Estoy trabajando en un proyecto de Rails que tendrá que interactuar con varias API de terceros. Soy bastante nuevo en Rails, y nunca he hecho esto antes, por lo que me falta información básica aquí. Específicamente, ¿cuál es la forma preferida de Rails de simplemente consultar una URL externa?

En el mundo de PHP, era cURL. Tome la URL del recurso, lance cURL y comience a procesar la respuesta, ya sea XML, JSON, etc.

Entonces, ¿cuál es el cURL equivalente en Rails? Mientras estamos en eso, ¿cuál es el método preferido para analizar las respuestas JSON y XML? Mis instintos son buscar en Google algunas gemas de Ruby para hacer el trabajo, pero este es un problema tan práctico que no me sorprendería si la comunidad de Rails ya hubiera elaborado una solución probada y verdadera para este tipo de problema. .

Si tiene algún valor contextual, planeo ejecutar estas interacciones de API de terceros como cronjobs nocturnos, probablemente todos empaquetados como tareas de rake personalizadas.

Gracias por compartir tu experiencia.


para abrir urls puedes usar open-uri

sólo

require ''open-uri'' file_handle = open("http://google.com/blah.xml")

para analizar xml puedes usar Nokogiri

$ gem install nokogiri

document = Nokogiri::XML(file_handle) document/"xpath/search"

Una biblioteca muy poderosa, puede hacer todo tipo de búsquedas y modificaciones tanto para XML como para HTML.

Lo mismo para html Nokogiri::HTML

También hay un montón de soporte JSOM por ahí también

Checkout Nokogiri también Hpricot es bueno para XML / HTML

para JSON en rieles

parsed_json = ActiveSupport::JSON.decode(your_json_string) parsed_json["results"].each do |longUrl, convertedUrl| site = Site.find_by_long_url(longUrl) site.short_url = convertedUrl["shortUrl"] site.save end

vea esta pregunta: ¿Cómo puedo analizar JSON con Ruby on Rails?