0Pricing
Ruby Academy · Lezione

API JSON

Restituire JSON

API JSON è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.

Perché le API JSON

JSON è il formato standard dei dati per le API web. I client inviano e ricevono dati strutturati invece di HTML.

  • Indipendente dal linguaggio
  • Si mappa facilmente su hash e array Ruby
  • Leggero e leggibile dall'uomo

La libreria standard di Ruby gestisce JSON tramite il modulo json.

require 'json'

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

Convertire Ruby in JSON

Chiami to_json su un hash o un array, oppure utilizzi JSON.generate.

  • Simboli e stringhe diventano chiavi JSON
  • Le strutture annidate vengono convertite ricorsivamente
require 'json'

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

Formattare JSON in modo leggibile

Per ottenere un output leggibile, utilizzi JSON.pretty_generate.

  • Aggiunge rientri e nuove righe
  • È ottimo per il debugging e i log
  • Lo eviti nelle risposte di produzione per risparmiare byte
require 'json'

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

Analizzare l'input JSON

Utilizzi JSON.parse per trasformare una stringa JSON in ingresso in oggetti Ruby.

  • Per impostazione predefinita, le chiavi sono stringhe
  • Passi symbolize_names: true per utilizzare chiavi simbolo
require 'json'

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

Chiavi simbolo

Le chiavi simbolo sono comode e leggermente più veloci da cercare.

  • Le abiliti con symbolize_names: true
  • Faccia attenzione all'input non attendibile che potrebbe creare un numero elevato di simboli
require 'json'

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

Restituire JSON da Sinatra

In una route Sinatra, imposti il tipo di contenuto e restituisca una stringa JSON.

  • content_type :json imposta l'intestazione
  • Restituisca hash.to_json come corpo
require 'sinatra'
require 'json'

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

Lettura del corpo di una richiesta JSON

Per le API POST, legga il corpo grezzo e lo analizzi.

  • request.body.read restituisce la stringa grezza
  • La analizzi con 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

Creazione di un hash per la risposta API

Mantenga coerenti le risposte creando un hash strutturato prima della serializzazione.

  • Racchiuda i dati sotto una chiave data
  • Includa lo stato e i metadati
require 'json'

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

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

Gestione degli errori di analisi

Un JSON non valido genera JSON::ParserError. Lo gestisca sempre.

  • Restituisca al client una risposta 400 Bad Request
  • Non lasci mai che un errore di analisi arresti l'app
require 'json'

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

Serializzazione di array di oggetti

Le raccolte vengono serializzate naturalmente come array JSON.

  • Un array di hash diventa un array di oggetti
  • Utilizzi map per dare forma a ogni record
require 'json'

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

to_json personalizzato sugli oggetti

È possibile insegnare a una classe come serializzarsi definendo to_json o as_json.

  • Converta lo stato interno in un hash semplice
  • Nasconda i campi privati dall'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

Controllo rapido

Verifichi le sue conoscenze sulle API JSON.

Riepilogo

Ha imparato a creare API JSON:

  • require 'json' dalla libreria standard
  • to_json / JSON.generate serializzano Ruby in JSON
  • JSON.parse deserializza il JSON in entrata
  • Imposti content_type :json nelle route Sinatra
  • Gestisca sempre JSON::ParserError

Ora esplorerà Rack e i middleware.

Domande Frequenti

La lezione «API JSON» è gratuita?

Sì — il testo completo di «API JSON» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.

Cosa imparerò in «API JSON»?

Restituire JSON Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ruby Academy?

Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «API JSON»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ruby Academy?

Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Basi di Sinatra
  2. Route e parametri
  3. API JSON
  4. Middleware e Rack
← Torna a Ruby Academy