JSON-rajapinnat
Palauta JSONia.
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_jsonRubyn 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: truesymboliavaimia 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 :jsonasettaa otsakkeen- Palauttakaa
hash.to_jsonrungoksi
require 'sinatra'
require 'json'
get '/api/status' do
content_type :json
{ status: 'ok', time: Time.now.to_i }.to_json
endJSON-pyynnön rungon lukeminen
POST-rajapinnoissa lukekaa raakasisältö ja jäsentäkää se.
request.body.readpalauttaa 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
endAPI-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}"
endOlioiden 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_jsonMukautettu 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_jsonPikatarkistus
Varmistakaa JSON-rajapintoja koskeva osaamisenne.
Kertaus
Opitte rakentamaan JSON-rajapintoja:
require 'json'lataa vakiokirjastonto_json/JSON.generatesarjallistavat Rubyn JSONiksiJSON.parsepalauttaa saapuvan JSONin olioiksi- Asettakaa Sinatra-reiteissä
content_type :json - Ottakaa
JSON::ParserErroraina kiinni
Seuraavaksi tutustutte Rackiin ja väliohjelmistoon.
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
- Sinatran perusteet
- Reitit ja parametrit
- JSON-rajapinnat
- Middleware ja Rack