O Faraday é uma gem que nos ajuda a lidar com requisições HTTP em aplicações Ruby on Rails. Vamos mostrar uma forma de usar essa ferramenta utilizando uma aplicação hipotética em que acessamos uma API para receber dados e criar uma série de produtos que serão apresentados ao consumidor. Criamos um PORO (Plain old Ruby Object) com a classe Product
, o código poderia ficar semelhante ao seguinte:
class Product
attr_acessor :id, :key
def initialize(id, key)
@id = id
@key = key
end
def self.all
require 'net/http'
uri = URI('http://localhost:3000/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new('/api/v1/product_types')
response = http.request(req)
json = JSON.parse(response.body, symbolize_names: true)
result = json.map do |item|
item = new(item[:id], item[:product_key])
end
result
end
Note como, na classe acima, uma grande parte do código consiste na configuração da requisição HTTP. O Faraday nos ajuda a reduzir bastante esse código, além de oferecer uma série de funcionalidades que nos dão flexibilidade na hora de implementar métodos. Em nossa aplicação hipotética, usando o Faraday, a classe Product
poderia ficar assim:
class Product
attr_acessor :id, :key
def initialize(id, key)
@id = id
@key = key
end
def self.all
response = Faraday.get('http://localhost:3000/api/v1/product_types')
json = JSON.parse(response.body, symbolize_names: true)
result = json.map do |item|
item = new(item[:id], item[:product_key])
end
result
end
Este é apenas um exemplo simplificado de aplicação do Faraday. Você pode ver outras funcionalidades na documentação oficial.