Tous les guides
Intermédiaire-AvancéÀ votre rythmeGuide gratuitSection 9/33

Parsing et consommation d'API

Apprenez à construire et vérifier une application web avec des outils de développement et des assistants IA. Pratiquez les étapes de conception, code et validation.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 13.2.4 : Parsing et consommation d'API

🎯 Objectif pédagogique

Lire des fichiers structurés (CSV, JSON) et consommer des APIs REST en Ruby — compétences essentielles pour des applications connectées.


Parsing CSV

require 'csv'

CSV.foreach('clients.csv', headers: true) do |row|
  puts "#{row['nom']} - #{row['email']}"
end

# Écrire un CSV
CSV.open('export.csv', 'w') do |csv|
  csv << ['nom', 'email', 'age']
  csv << ['Alice', 'alice@test.com', 28]
  csv << ['Bob', 'bob@test.com', 32]
end

Parsing JSON

require 'json'

json_string = '{"nom": "Alice", "age": 28}'
data = JSON.parse(json_string)
data['nom']

# Avec clés symboliques
data = JSON.parse(json_string, symbolize_names: true)
data[:nom]

# Générer du JSON
utilisateur = { nom: 'Alice', age: 28 }
JSON.generate(utilisateur)
JSON.pretty_generate(utilisateur)

Consommer une API REST

require 'open-uri'
require 'json'

url = 'https://api.github.com/users/lewagon'
response = URI.open(url).read
user = JSON.parse(response)
puts user['name']
puts user['public_repos']

La gem rest-client

require 'rest-client'
require 'json'

# GET
response = RestClient.get('https://api.example.com/users')
users = JSON.parse(response.body)

# POST
response = RestClient.post(
  'https://api.example.com/users',
  { nom: 'Alice', email: 'alice@test.com' }.to_json,
  { content_type: :json, accept: :json }
)

# Gestion d erreurs
begin
  RestClient.get('https://api.example.com/unknown')
rescue RestClient::NotFound
  puts '404 - Non trouvé'
rescue RestClient::ExceptionWithResponse => e
  puts "Erreur: #{e.response.code}"
end

Exercice : CLI météo

require 'open-uri'
require 'json'

class MeteoService
  BASE_URL = 'https://api.open-meteo.com/v1/forecast'

  def temperature(lat, lon)
    url = "#{BASE_URL}?latitude=#{lat}&longitude=#{lon}&current_weather=true"
    data = JSON.parse(URI.open(url).read)
    data['current_weather']['temperature']
  end
end

service = MeteoService.new
temp = service.temperature(48.8566, 2.3522)
puts "Paris : #{temp} C"
Vérification rapide

Quelle méthode convertit un Hash Ruby en JSON ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.