0Pricing
Ruby Academy · Leçon

API JSON

Renvoyez du JSON

API JSON est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.

Pourquoi des API JSON ?

JSON est le format de données standard des API web. Les clients envoient et reçoivent des données structurées plutôt que du HTML.

  • Indépendant du langage
  • Se traduit naturellement en tables de hachage et tableaux Ruby
  • Léger et lisible par l’être humain

La bibliothèque standard de Ruby gère JSON au moyen du module json.

require 'json'

data = { name: 'Ada', langs: ['Ruby', 'Python'] }
puts data.to_json

Convertir Ruby en JSON

Appelez to_json sur une table de hachage ou un tableau, ou utilisez JSON.generate.

  • Les symboles et les chaînes deviennent des clés JSON
  • Les structures imbriquées sont converties récursivement
require 'json'

user = { id: 1, active: true, tags: ['admin'] }
puts JSON.generate(user)

Mise en forme lisible de JSON

Pour obtenir une sortie lisible, utilisez JSON.pretty_generate.

  • Ajoute une indentation et des sauts de ligne
  • Très utile pour le débogage et les journaux
  • À éviter dans les réponses de production pour économiser des octets
require 'json'

config = { server: { host: 'localhost', port: 4567 } }
puts JSON.pretty_generate(config)

Analyser les entrées JSON

Utilisez JSON.parse pour transformer une chaîne JSON entrante en objets Ruby.

  • Par défaut, les clés sont des chaînes
  • Transmettez symbolize_names: true pour utiliser des clés symboliques
require 'json'

raw = '{"name": "Ada", "age": 30}'
data = JSON.parse(raw)
puts data['name']
puts data['age']

Clés symboliques

Les clés symboliques sont pratiques et légèrement plus rapides à rechercher.

  • Activez-les avec symbolize_names: true
  • Soyez prudent avec les entrées non fiables qui créent de nombreux symboles
require 'json'

raw = '{"city": "Istanbul"}'
data = JSON.parse(raw, symbolize_names: true)
puts data[:city]

Renvoyer du JSON depuis Sinatra

Dans une route Sinatra, définissez le type de contenu et renvoyez une chaîne JSON.

  • content_type :json définit l’en-tête
  • Renvoyez hash.to_json comme corps
require 'sinatra'
require 'json'

get '/api/status' do
  content_type :json
  { status: 'ok', time: Time.now.to_i }.to_json
end

Lire le corps d’une requête JSON

Pour les API POST, lisez le corps brut et analysez-le.

  • request.body.read fournit la chaîne brute
  • Analysez-la avec JSON.parse
require 'sinatra'
require 'json'

post '/api/users' do
  payload = JSON.parse(request.body.read)
  content_type :json
  { created: payload['name'] }.to_json
end

Construire un hachage de réponse d’API

Pour garantir la cohérence des réponses, construisez un hachage structuré avant de le sérialiser.

  • Placez les données sous une clé data
  • Incluez le statut et les métadonnées
require 'json'

def api_response(data, status: 'ok')
  { status: status, data: data }.to_json
end

puts api_response({ id: 1, name: 'Ada' })

Gérer les erreurs d’analyse

Un JSON malformé lève JSON::ParserError. Gérez-le toujours.

  • Renvoyez une réponse 400 « Requête incorrecte » au client
  • Ne laissez jamais une erreur d’analyse faire planter l’application
require 'json'

begin
  JSON.parse('{ broken')
rescue JSON::ParserError => e
  puts "Invalid JSON: #{e.message}"
end

Sérialiser des tableaux d’objets

Les collections se sérialisent naturellement sous forme de tableaux JSON.

  • Un tableau de hachages devient un tableau d’objets
  • Utilisez map pour mettre en forme chaque enregistrement
require 'json'

users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'Bob' }]
output = users.map { |u| { name: u[:name] } }
puts output.to_json

to_json personnalisé sur des objets

Vous pouvez apprendre à une classe à se sérialiser en définissant to_json ou as_json.

  • Convertissez l’état interne en hachage simple
  • Masquez les champs privés de l’API
require 'json'

class User
  def initialize(id, name)
    @id = id
    @name = name
  end

  def to_json(*)
    { id: @id, name: @name }.to_json
  end
end

puts User.new(1, 'Ada').to_json

Vérification rapide

Vérifiez vos connaissances des API JSON.

Récapitulatif

Vous avez appris à créer des API JSON :

  • require 'json' depuis la bibliothèque standard
  • to_json / JSON.generate sérialisent Ruby en JSON
  • JSON.parse désérialise le JSON reçu
  • Définissez content_type :json dans les routes Sinatra
  • Gérez toujours JSON::ParserError

Ensuite, vous découvrirez Rack et les intergiciels.

Questions Fréquemment Posées

La leçon « API JSON » est-elle gratuite ?

Oui — le texte complet de « API JSON » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « API JSON » ?

Renvoyez du JSON Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Ruby Academy ?

Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « API JSON » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?

Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bases de Sinatra
  2. Routes et paramètres
  3. API JSON
  4. Intergiciel et Rack
← Retour à Ruby Academy