arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Cómo consumir un API con Ruby

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 1 Min. de lectura

remove_red_eye 35709 visitas

calendar_today 25 Octubre 2019

En esta ocasión aprenderemos a consumir un API utilizando Ruby. Es bastante sencillo, veamos. 🤠

Lo primero que debemos hacer será instalar la gema rest_client. A Partir de esta gema seremos capaces de realizar diferentes peticiones a diferentes servidores. 🎉

gem install rest-client

Una vez hecho esto, el siguiente paso será importar rest_cliente y json en nuestro script.

require 'rest-client'
require 'json'

Listo, con la gema instalada y las bibliotecas importadas el siguiente paso será realizar la petición. Para este tutorial haremos uso del API Poke API. Mostraremos en consola el nombre del pokémon con id 1.

Peticiones

La forma más sencilla de realizar una petición get con rest_client es utilizando el método get de la clase RestClient.

response = RestClient.get('https://pokeapi.co/api/v2/pokemon/1')

results = JSON.parse(response.to_str)
name = results['forms'][0]['name']
puts "El nombre del pokemon es: #{name}"

Otra forma es a través de un objeto Request, ejecutando su método execute.

response = RestClient::Request.new(
   :method => :get,
   :url => 'https://pokeapi.co/api/v2/pokemon/1/',
).execute

results = JSON.parse(response.to_str)
name = results['forms'][0]['name']
puts "El nombre del pokemon es: #{name}"

También podemos hacer uso de la función execute directamente.

response = RestClient::Request.execute(method: :get, url: 'https://pokeapi.co/api/v2/pokemon/1',timeout: 10)

En este caso indicó un timeout, 10 segundos, un tiempo máximo de respuesta.

si queremos conocer el código de respuesta podemos apoyar de atributo code.

puts response.code
RestClient.get('https://pokeapi.co/api/v2/pokemon/1') { |response, request, result|
    if response.code ==  200
        results = JSON.parse(response.to_str)
        name = results['forms'][0]['name']
        puts "El nombre del pokemon es: #{name}"
    end
}

Lo interesante de rest_client es que no estamos limitados únicamente a realizar peticiones por el método get; también podemos hacerlo con post, put, patch y delete los métodos HTTP más utilizados.

response = RestClient.post('https://httpbin.org/post', {name: 'CodigoFacilito'})
puts response.code

En este caso pasaos como segundo argumento el json a enviar.

response = RestClient::Request.new(
  :method => :post,
  :url => 'https://httpbin.org/post',
  :payload => { name: 'CodigoFacilito'}
).execute

puts response.code
params = { name: 'CodigoFacilito'}
RestClient.post('https://httpbin.org/post', params) { |response, request, result|
    puts response.code ==  200
}

Bootcamp FullStack con JavaScript

Más información

Inscripciones Abiertas.