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
}
Aumenta tu productividad con GitHub Copilot
- done Curso GRATUITO
- done Regístrate antes del 31 de Marzo
- done Obtén una ventaja competitiva
- done Aprovecha la IA a tu favor