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_jsonConvertire 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: trueper 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 :jsonimposta l'intestazione- Restituisca
hash.to_jsoncome corpo
require 'sinatra'
require 'json'
get '/api/status' do
content_type :json
{ status: 'ok', time: Time.now.to_i }.to_json
endLettura del corpo di una richiesta JSON
Per le API POST, legga il corpo grezzo e lo analizzi.
request.body.readrestituisce 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
endCreazione 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}"
endSerializzazione di array di oggetti
Le raccolte vengono serializzate naturalmente come array JSON.
- Un array di hash diventa un array di oggetti
- Utilizzi
mapper 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_jsonto_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_jsonControllo rapido
Verifichi le sue conoscenze sulle API JSON.
Riepilogo
Ha imparato a creare API JSON:
require 'json'dalla libreria standardto_json/JSON.generateserializzano Ruby in JSONJSON.parsedeserializza il JSON in entrata- Imposti
content_type :jsonnelle 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.