Rails Insights

Realizando Solicitudes HTTP en Ruby

Ruby es un lenguaje de programación versátil y fácil de usar, ideal para el desarrollo web y la automatización de tareas. Una de las tareas más comunes en el desarrollo web es realizar solicitudes HTTP, ya sea para obtener datos de una API, enviar información a un servidor o interactuar con otros servicios web. En este artículo, exploraremos cómo realizar solicitudes HTTP en Ruby de manera efectiva y amigable.

¿Qué es una Solicitud HTTP?

HTTP (Protocolo de Transferencia de Hipertexto) es un protocolo de comunicación que permite la transferencia de datos en la web. Las solicitudes HTTP son la forma en que un cliente (como un navegador o una aplicación) se comunica con un servidor. Existen varios métodos de solicitud, siendo los más comunes:

  • GET: Solicita datos del servidor.
  • POST: Envía datos al servidor.
  • PUT: Actualiza datos existentes en el servidor.
  • DELETE: Elimina datos del servidor.

En Ruby, hay varias bibliotecas que facilitan la realización de solicitudes HTTP. En este artículo, nos centraremos en dos de las más populares: Net::HTTP y HTTParty.

Usando Net::HTTP

Net::HTTP es una biblioteca estándar de Ruby que permite realizar solicitudes HTTP. A continuación, veremos cómo usarla para realizar diferentes tipos de solicitudes.

Realizando una Solicitud GET

Para realizar una solicitud GET, puedes usar el siguiente código:

require 'net/http'
require 'uri'

uri = URI.parse("http://jsonplaceholder.typicode.com/posts")
response = Net::HTTP.get_response(uri)

puts response.body

En este ejemplo, estamos solicitando datos de un recurso ficticio que devuelve una lista de publicaciones. La respuesta se almacena en la variable response, y luego imprimimos el cuerpo de la respuesta.

Realizando una Solicitud POST

Para enviar datos al servidor, utilizamos una solicitud POST. Aquí hay un ejemplo:

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("http://jsonplaceholder.typicode.com/posts")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == "https"

request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json'})
request.body = {title: 'foo', body: 'bar', userId: 1}.to_json

response = http.request(request)

puts response.body

En este caso, estamos enviando un objeto JSON que representa una nueva publicación. La respuesta del servidor se imprime de la misma manera que en la solicitud GET.

Configurando Parámetros y Encabezados

Es posible que necesites enviar parámetros adicionales o encabezados personalizados en tus solicitudes. Aquí hay un ejemplo de cómo hacerlo:

require 'net/http'
require 'uri'

uri = URI.parse("http://jsonplaceholder.typicode.com/posts?userId=1")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer tu_token_aqui"

response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end

puts response.body

En este ejemplo, hemos agregado un parámetro de consulta y un encabezado de autorización a nuestra solicitud GET.

Usando HTTParty

HTTParty es una gema de Ruby que simplifica aún más el proceso de realizar solicitudes HTTP. Para usar HTTParty, primero debes instalar la gema. Puedes hacerlo ejecutando:

gem install httparty

Una vez instalada, puedes usarla de la siguiente manera:

Realizando una Solicitud GET con HTTParty

require 'httparty'

response = HTTParty.get("http://jsonplaceholder.typicode.com/posts")
puts response.body

Como puedes ver, HTTParty hace que la sintaxis sea más limpia y fácil de leer.

Realizando una Solicitud POST con HTTParty

require 'httparty'

response = HTTParty.post("http://jsonplaceholder.typicode.com/posts", 
  body: {title: 'foo', body: 'bar', userId: 1}.to_json,
  headers: {'Content-Type' => 'application/json'})

puts response.body

En este caso, también estamos enviando un objeto JSON, pero la sintaxis es más concisa gracias a HTTParty.

Configurando Parámetros y Encabezados con HTTParty

require 'httparty'

response = HTTParty.get("http://jsonplaceholder.typicode.com/posts", 
  query: {userId: 1}, 
  headers: {"Authorization" => "Bearer tu_token_aqui"})

puts response.body

HTTParty permite agregar parámetros de consulta y encabezados de manera sencilla, lo que facilita la interacción con APIs.

Manejo de Errores

Es importante manejar posibles errores al realizar solicitudes HTTP. Tanto Net::HTTP como HTTParty ofrecen formas de capturar y manejar excepciones. Aquí hay un ejemplo de cómo manejar errores con HTTParty:

require 'httparty'

begin
  response = HTTParty.get("http://jsonplaceholder.typicode.com/posts/9999")
  if response.code != 200
    raise "Error: #{response.code} - #{response.message}"
  end
  puts response.body
rescue StandardError => e
  puts "Se produjo un error: #{e.message}"
end

En este ejemplo, intentamos obtener un recurso que no existe. Si la respuesta no es exitosa, lanzamos una excepción que se captura en el bloque rescue.

Conclusión

Realizar solicitudes HTTP en Ruby es una tarea sencilla gracias a las bibliotecas como Net::HTTP y HTTParty. Ambas ofrecen funcionalidades robustas para interactuar con APIs y otros servicios web. A medida que te familiarices con estas herramientas, podrás integrar fácilmente datos externos en tus aplicaciones Ruby.

Ya sea que estés construyendo una aplicación web, un script de automatización o simplemente explorando datos de una API, Ruby te proporciona las herramientas necesarias para realizar solicitudes HTTP de manera efectiva. ¡Feliz codificación!

Published: August 13, 2024

© 2024 RailsInsights. All rights reserved.