API JSON
Zwracanie JSON
API JSON to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Dlaczego API JSON?
JSON jest standardowym formatem danych dla internetowych API. Klienci wysyłają i odbierają ustrukturyzowane dane zamiast kodu HTML.
- Niezależny od języka
- Łatwo odwzorowuje się na hashe i tablice Ruby
- Lekki i czytelny dla człowieka
Biblioteka standardowa Ruby obsługuje JSON za pomocą modułu json.
require 'json'
data = { name: 'Ada', langs: ['Ruby', 'Python'] }
puts data.to_jsonKonwertowanie Ruby do JSON
Należy wywołać to_json na hashu lub tablicy albo użyć JSON.generate.
- Symbole i ciągi znaków stają się kluczami JSON
- Zagnieżdżone struktury są konwertowane rekursywnie
require 'json'
user = { id: 1, active: true, tags: ['admin'] }
puts JSON.generate(user)Formatowanie JSON
Aby uzyskać czytelny wynik, należy użyć JSON.pretty_generate.
- Dodaje wcięcia i znaki nowego wiersza
- Świetnie nadaje się do debugowania i logów
- W odpowiedziach produkcyjnych należy go unikać, aby oszczędzać bajty
require 'json'
config = { server: { host: 'localhost', port: 4567 } }
puts JSON.pretty_generate(config)Analizowanie danych wejściowych JSON
Należy użyć JSON.parse, aby przekształcić przychodzący ciąg JSON w obiekty Ruby.
- Domyślnie klucze są ciągami znaków
- Argument
symbolize_names: trueumożliwia używanie kluczy będących symbolami
require 'json'
raw = '{"name": "Ada", "age": 30}'
data = JSON.parse(raw)
puts data['name']
puts data['age']Klucze będące symbolami
Klucze będące symbolami są wygodne i można je wyszukiwać nieco szybciej.
- Należy je włączyć za pomocą
symbolize_names: true - Należy uważać na niezaufane dane wejściowe, które mogą tworzyć dużą liczbę symboli
require 'json'
raw = '{"city": "Istanbul"}'
data = JSON.parse(raw, symbolize_names: true)
puts data[:city]Zwracanie JSON-u z Sinatra
W trasie Sinatra należy ustawić typ zawartości i zwrócić ciąg znaków JSON.
content_type :jsonustawia nagłówek- Zwróć
hash.to_jsonjako treść odpowiedzi
require 'sinatra'
require 'json'
get '/api/status' do
content_type :json
{ status: 'ok', time: Time.now.to_i }.to_json
endOdczytywanie treści żądania JSON
W przypadku interfejsów API POST należy odczytać surową treść żądania i ją sparsować.
request.body.readzwraca surowy ciąg znaków- Przeprowadź parsowanie za pomocą
JSON.parse
require 'sinatra'
require 'json'
post '/api/users' do
payload = JSON.parse(request.body.read)
content_type :json
{ created: payload['name'] }.to_json
endBudowanie hasha odpowiedzi API
Aby zachować spójność odpowiedzi, przed serializacją należy zbudować ustrukturyzowany hash.
- Umieść dane pod kluczem
data - Dołącz status i metadane
require 'json'
def api_response(data, status: 'ok')
{ status: status, data: data }.to_json
end
puts api_response({ id: 1, name: 'Ada' })Obsługa błędów parsowania
Nieprawidłowo sformatowany JSON zgłasza JSON::ParserError. Zawsze należy go obsłużyć.
- Zwróć klientowi błąd 400 Bad Request
- Nie dopuszczaj, aby błąd parsowania zakończył działanie aplikacji
require 'json'
begin
JSON.parse('{ broken')
rescue JSON::ParserError => e
puts "Invalid JSON: #{e.message}"
endSerializowanie tablic obiektów
Kolekcje są naturalnie serializowane jako tablice JSON.
- Tablica hashy staje się tablicą obiektów
- Użyj
map, aby nadać kształt każdemu rekordowi
require 'json'
users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'Bob' }]
output = users.map { |u| { name: u[:name] } }
puts output.to_jsonNiestandardowe to_json dla obiektów
Można nauczyć klasę serializowania, definiując to_json lub as_json.
- Przekształć stan wewnętrzny w zwykły hash
- Ukryj prywatne pola przed 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_jsonSzybkie sprawdzenie
Proszę sprawdzić znajomość API JSON.
Podsumowanie
Nauczyli się Państwo budować interfejsy API JSON:
require 'json'pochodzi ze standardowej bibliotekito_json/JSON.generateserializują kod Ruby do formatu JSONJSON.parsedeserializuje przychodzący JSON- Ustawiaj
content_type :jsonw trasach Sinatra - Zawsze obsługuj
JSON::ParserError
W następnej części poznają Państwo Rack i middleware.
Często zadawane pytania
Czy lekcja „API JSON” jest bezpłatna?
Tak — pełny tekst „API JSON” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „API JSON”?
Zwracanie JSON Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „API JSON”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.