⊗jsrxPmSDCl 44 of 57 menu

Asiakasohjelma Redux-sovellukseen

Edellisillä tunneilla olemme käytännössä saaneet palvelinpuolen työn sovelluksellemme valmiiksi, hieman täydennämme sitä tarpeen mukaan seuraavissa oppitunneissa. Nyt meidän on luotava sovelluksen asiakasohjelma, joka lähettää HTTP-pyyntöjä palvelimelle.

Avataan tuotesovelluksemme ja luodaan kansioon api tiedosto client.js. Aluksi kirjoitamme itse client-funktion, joka toimii sekä GET- että POST-pyynnöille. Sen parametreina saavat polku, tyyppi ja pyynnön runko (POST-tapauksessa), jos sellainen on:

export async function client(url, method, body = {}) {}

Seuraavaksi meidän on muodostettava options-objekti, jossa välitämme erilaista tietoa pyynnölle. Tämä on pyynnön tyyppi ja otsikot:

export async function client(url, method, body = {}) { const options = { method: method, headers: { 'Content-Type': 'application/json', }, } }

body-ominaisuutemme on valinnainen, meidän on annettava se, jos meillä on POST-pyyntö. Tätä varten client-funktion sisällä options-objektin koodin jälkeen lisäämme sen options:iin pyynnön rungolla JSON-muodossa, jos POST-metodi on valittu:

if (method === 'POST') { options.body = JSON.stringify(body) }

Sitten alempana client-koodissa järjestämme try-lohkon, jonka ensimmäisellä rivillä fetch:n avulla saamme vastauksen palvelimelta. Epäonnistumisen tapauksessa palautamme perinteisesti promisen virheellä:

let data try { const response = await window.fetch(url, options) } catch (err) { return Promise.reject(err.message ? err.message : data) }

Kirjoitetaan nyt koodi try-lohkoon. response:n vastaanottamisen jälkeen, meidän täytyy käsitellä se. Puretaan siitä tiedot JSON-muotoon ja jos vastauksen tila signalisoi meille, että kaikki on kunnossa, palautamme objektin tiedoilla ja tiedoilla: tilalla, otsikoilla ja osoitteella. Jos tila ei ole 'ok', heitämme poikkeuksen tilan tekstillä:

try { const response = await window.fetch(url, options) data = await response.json() if (response.ok) { return { status: response.status, headers: response.headers, url: response.url, data, } } throw new Error(response.statusText) }

client-funktion koodi on valmis, vielä täytyy vain kirjoittaa kuinka GET- ja POST-menetelmämme toimivat kutsuttaessa. Kirjoitetaan niiden koodi client-funktion jälkeen. client.get-metodi ottaa parametrina polun ja kutsuu client-funktiota, antaa sille tämän polun ja GET-pyynnön tyypin:

client.get = (url) => client(url, 'GET')

Ja client.post:n tulee välittää client:lle polun, POST-pyynnön tyypin ja pyynnön rungon:

client.post = (url, body) => client(url, 'POST', body)

Siinä kaikki, pieni asiakasohjelmamme on valmis työskentelemään palvelimen kanssa.

Avaa opiskelijasovelluksesi, luo sen api-kansioon api tiedosto client.js. Tutustuttuasi oppitunnin materiaaleihin kirjoita (kopioi) client-funktion koodi ja sen kaksi metodia client.get ja client.post.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää