Ruby Academy · Oppitunti

JSON-rajapinnat

Palauta JSONia.

Oppitunti 3/413 vaihetta

JSON-rajapinnat on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Miksi JSON-rajapintoja käytetään?

JSON on web-rajapintojen vakiomuotoinen tiedonsiirtomuoto. Asiakkaat lähettävät ja vastaanottavat jäsenneltyä dataa HTML:n sijaan.

  • Ohjelmointikielestä riippumaton
  • Muuntuu luontevasti Ruby-hasheiksi ja -taulukoiksi
  • Kevyt ja ihmisen luettavissa

Rubyn standardikirjasto käsittelee JSONia json-moduulin avulla.

require 'json'

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

Rubyn muuntaminen JSONiksi

Kutsukaa hashille tai taulukolle to_json-metodia tai käyttäkää JSON.generate-metodia.

  • Symbolit ja merkkijonot muuttuvat JSON-avaimiksi
  • Sisäkkäiset rakenteet muunnetaan rekursiivisesti
require 'json'

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

JSONin muotoilu

Käyttäkää luettavaa tulostetta varten JSON.pretty_generate-metodia.

  • Lisää sisennyksiä ja rivinvaihtoja
  • Sopii erinomaisesti virheenkorjaukseen ja lokeihin
  • Välttäkää sitä tuotantovastauksissa tavujen säästämiseksi
require 'json'

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

JSON-syötteen jäsentäminen

Kääntäkää saapuva JSON-merkkijono Ruby-olioiksi käyttämällä JSON.parse-metodia.

  • Oletusarvoisesti avaimet ovat merkkijonoja
  • Välittäkää symbolize_names: true symboliavaimia varten
require 'json'

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

Symboliavaimet

Symboliavaimet ovat käteviä, ja niiden haku on hieman nopeampaa.

  • Ottakaa ne käyttöön asetuksella symbolize_names: true
  • Olkaa varovaisia, jos epäluotettava syöte voi luoda suuren määrän symboleita
require 'json'

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

JSONin palauttaminen Sinatrasta

Sinatra-reitissä asetetaan sisällön tyyppi ja palautetaan JSON-merkkijono.

  • content_type :json asettaa otsakkeen
  • Palauttakaa hash.to_json rungoksi
require 'sinatra'
require 'json'

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

JSON-pyynnön rungon lukeminen

POST-rajapinnoissa lukekaa raakasisältö ja jäsentäkää se.

  • request.body.read palauttaa raakana olevan merkkijonon
  • Jäsentäkää se komennolla 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

API-vastauksen hashin rakentaminen

Pitäkää vastaukset yhdenmukaisina rakentamalla jäsennelty hash ennen sarjallistamista.

  • Upottakaa data data-avaimen alle
  • Sisällyttäkää tila ja metatiedot
require 'json'

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

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

Jäsennysvirheiden käsittely

Virheellinen JSON aiheuttaa poikkeuksen JSON::ParserError. Ottakaa se aina kiinni rescue-lauseella.

  • Palauttakaa asiakkaalle 400 Bad Request -vastaus
  • Älkää koskaan antako jäsennysvirheen kaataa sovellusta
require 'json'

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

Olioiden taulukoiden sarjallistaminen

Kokoelmat sarjallistuvat JSON-taulukoiksi luonnostaan.

  • Hashien taulukosta tulee oliotaulukko
  • Muotoilkaa kukin tietue map-menetelmällä
require 'json'

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

Mukautettu to_json olioissa

Voitte opettaa luokalle sarjallistamisen määrittelemällä to_json- tai as_json-menetelmän.

  • Muuntaa sisäisen tilan tavalliseksi hashiksi
  • Piilottaa yksityiset kentät API:lta
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

Pikatarkistus

Varmistakaa JSON-rajapintoja koskeva osaamisenne.

Kertaus

Opitte rakentamaan JSON-rajapintoja:

  • require 'json' lataa vakiokirjaston
  • to_json / JSON.generate sarjallistavat Rubyn JSONiksi
  • JSON.parse palauttaa saapuvan JSONin olioiksi
  • Asettakaa Sinatra-reiteissä content_type :json
  • Ottakaa JSON::ParserError aina kiinni

Seuraavaksi tutustutte Rackiin ja väliohjelmistoon.

Aloita maksutta

Opi Ruby tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
29
Oppitunnit
109

Usein kysytyt kysymykset

Onko oppitunti ”JSON-rajapinnat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “JSON-rajapinnat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”JSON-rajapinnat”?

Palauta JSONia. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”JSON-rajapinnat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Ruby Academy-oppitunnilla?

Kyllä. Jokainen Ruby Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Sinatran perusteet
  2. Reitit ja parametrit
  3. JSON-rajapinnat
  4. Middleware ja Rack
← Takaisin: Ruby Academy