APIs JSON
Retorne JSON.
APIs JSON é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Por que usar APIs JSON?
JSON é o formato de dados padrão para APIs web. Os clientes enviam e recebem dados estruturados em vez de HTML.
- Independente de linguagem
- É convertido facilmente em mapas e vetores Ruby
- Leve e legível por humanos
A biblioteca padrão do Ruby lida com JSON por meio do módulo json.
require 'json'
data = { name: 'Ada', langs: ['Ruby', 'Python'] }
puts data.to_jsonConvertendo Ruby para JSON
Chame to_json em um mapa ou vetor, ou use JSON.generate.
- Símbolos e cadeias de caracteres tornam-se chaves JSON
- Estruturas aninhadas são convertidas recursivamente
require 'json'
user = { id: 1, active: true, tags: ['admin'] }
puts JSON.generate(user)Formatando JSON para leitura
Para obter uma saída legível, use JSON.pretty_generate.
- Adiciona indentação e quebras de linha
- É ótimo para depuração e registros
- Evite-o em respostas de produção para economizar bytes
require 'json'
config = { server: { host: 'localhost', port: 4567 } }
puts JSON.pretty_generate(config)Analisando a entrada JSON
Use JSON.parse para transformar uma cadeia JSON recebida em objetos Ruby.
- Por padrão, as chaves são cadeias de caracteres
- Passe
symbolize_names: truepara usar chaves de símbolo
require 'json'
raw = '{"name": "Ada", "age": 30}'
data = JSON.parse(raw)
puts data['name']
puts data['age']Chaves convertidas em símbolos
As chaves de símbolo são convenientes e ligeiramente mais rápidas de consultar.
- Ative-as com
symbolize_names: true - Tenha cuidado para que entradas não confiáveis não criem muitos símbolos
require 'json'
raw = '{"city": "Istanbul"}'
data = JSON.parse(raw, symbolize_names: true)
puts data[:city]Retornando JSON do Sinatra
Em uma rota do Sinatra, defina o tipo de conteúdo e retorne uma cadeia de caracteres JSON.
content_type :jsondefine o cabeçalho- Retorne
hash.to_jsoncomo corpo
require 'sinatra'
require 'json'
get '/api/status' do
content_type :json
{ status: 'ok', time: Time.now.to_i }.to_json
endLendo o Corpo de uma Requisição JSON
Para APIs POST, leia o corpo bruto e faça a análise dele.
request.body.readfornece a cadeia de caracteres bruta- Faça a análise com
JSON.parse
require 'sinatra'
require 'json'
post '/api/users' do
payload = JSON.parse(request.body.read)
content_type :json
{ created: payload['name'] }.to_json
endCriando um Hash de Resposta de API
Mantenha as respostas consistentes criando um hash estruturado antes de serializá-lo.
- Coloque os dados sob uma chave
data - Inclua o status e os metadados
require 'json'
def api_response(data, status: 'ok')
{ status: status, data: data }.to_json
end
puts api_response({ id: 1, name: 'Ada' })Tratando Erros de Análise
Um JSON malformado gera JSON::ParserError. Sempre capture esse erro.
- Retorne 400 Solicitação inválida ao cliente
- Nunca permita que um erro de análise faça o aplicativo falhar
require 'json'
begin
JSON.parse('{ broken')
rescue JSON::ParserError => e
puts "Invalid JSON: #{e.message}"
endSerializando Matrizes de Objetos
As coleções são serializadas naturalmente como matrizes JSON.
- Uma matriz de hashes se torna uma matriz de objetos
- Use
mappara estruturar cada registro
require 'json'
users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'Bob' }]
output = users.map { |u| { name: u[:name] } }
puts output.to_jsonto_json Personalizado em Objetos
Você pode ensinar uma classe a serializar definindo to_json ou as_json.
- Converta o estado interno em um hash simples
- Oculte os campos privados da 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_jsonVerificação rápida
Confirme seus conhecimentos sobre APIs JSON.
Recapitulação
Você aprendeu a criar APIs JSON:
require 'json'da biblioteca padrãoto_json/JSON.generateserializam Ruby para JSONJSON.parsedesserializa o JSON recebido- Defina
content_type :jsonnas rotas do Sinatra - Sempre capture
JSON::ParserError
A seguir, você explorará Rack e middleware.
Perguntas Frequentes
A aula “APIs JSON” é grátis?
Sim — o texto completo de “APIs JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “APIs JSON”?
Retorne JSON. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “APIs JSON”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.