0Pricing
Ruby Academy · Aula

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_json

Convertendo 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: true para 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 :json define o cabeçalho
  • Retorne hash.to_json como corpo
require 'sinatra'
require 'json'

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

Lendo o Corpo de uma Requisição JSON

Para APIs POST, leia o corpo bruto e faça a análise dele.

  • request.body.read fornece 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
end

Criando 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}"
end

Serializando Matrizes de Objetos

As coleções são serializadas naturalmente como matrizes JSON.

  • Uma matriz de hashes se torna uma matriz de objetos
  • Use map para estruturar cada registro
require 'json'

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

to_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_json

Verificação rápida

Confirme seus conhecimentos sobre APIs JSON.

Recapitulação

Você aprendeu a criar APIs JSON:

  • require 'json' da biblioteca padrão
  • to_json / JSON.generate serializam Ruby para JSON
  • JSON.parse desserializa o JSON recebido
  • Defina content_type :json nas 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.

Todas as aulas deste curso

  1. Fundamentos do Sinatra
  2. Rotas e parâmetros
  3. APIs JSON
  4. Middleware e Rack
← Voltar para Ruby Academy