2.2 - Client HTTP


Requête HTTP

Faraday

Ruby possède les utilitaires permettant d'effectuer des requêtes HTTP, toutefois la librairie Faraday en rend l'implémentation plus agréable.

client.rb

require "bundler/inline"

gemfile do
    source "http://rubygems.org"
    gem "faraday"
end

require "faraday"

response = Faraday.get("http://localhost:4567")
p(response)
puts(response.body)

# Si on reutilise le meme service pour plusieurs requetes
# on peut preparer une connexion reutilisable

connection = Faraday.new("http://localhost:4567")

response = connection.get("/about")
puts(response.body)

# Avec un parametre dans la QUERY STRING
response = connection.post("/greetings-query") do |request|
  request.params["name"] = "james"
end
puts(response.body)

# Avec un parametre dans le BODY

connection.post("/greetings-body", "james")

#
# Interpreter une reponse JSON
#

# Tableau JSON

response = connection.get("/response-array-json")
p(response.body)

array = JSON.parse(response.body)
p(array)

array.each do |v|
  puts(v * 2)
end

# Objet JSON

response = connection.get("/response-hash")
user = JSON.parse(response.body)

puts("Bonjour #{user["firstname"]} #{user["lastname"]}")

💻 Multiplicator, suite

Implémenter un client en Ruby qui utilise la librairie Faraday pour exploiter les fonctionnalités du service web Multiplicator.

  • Le programme demande à l'utilisateur le nombre et le format de sortie( texte par défaut OU json )
  • La requête est envoyée et le résultat affiché 👀 Pretty JSON

Exemples d'exécution

Nombre: 
Format: 

Fournir un entier positif!
Nombre: 4
Format: 

1 * 4 = 4
2 * 4 = 8
3 * 4 = 12
4 * 4 = 16
Nombre: 4
Format: patate

1 * 4 = 4
2 * 4 = 8
3 * 4 = 12
4 * 4 = 16
Nombre: 4
Format: json

[
    {
        "multiplicand": 1,
        "multiplier": 4, 
        "product": 4
    },
    {
        "multiplicand": 2,
        "multiplier": 4, 
        "product": 8
    },
    {
        "multiplicand": 3,
        "multiplier": 4, 
        "product": 12
    },
    {
        "multiplicand": 4,
        "multiplier": 4, 
        "product": 16
    },
]