⊗jsrxPmSDCl 44 of 57 menu

Πελάτης για Εφαρμογή στο Redux

Στα προηγούμενα μαθήματα σχεδόν ολοκληρώσαμε τη δουλειά με το διακομιστικό μέρος για την εφαρμογή μας, θα το συμπληρώσουμε λίγο ανάλογα με τις ανάγκες στα επόμενα μαθήματα. Τώρα πρέπει να δημιουργήσουμε έναν πελάτη για την εφαρμογή, ο οποίος θα στέλνει αιτήματα HTTP στον διακομιστή.

Ας ανοίξουμε την εφαρμογή μας με τα προϊόντα και στον φάκελο api να δημιουργήσουμε το αρχείο client.js. Αρχικά, θα γράψουμε την ίδια τη συνάρτηση client, η οποία θα λειτουργεί τόσο για GET όσο και για POST αιτήματα. Ως παραμέτρους θα λαμβάνει τη διαδρομή, τον τύπο και το σώμα του αιτήματος (στην περίπτωση POST), εάν υπάρχει:

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

Στη συνέχεια, πρέπει να διαμορφώσουμε το αντικείμενο options, στο οποίο θα μεταφέρουμε διάφορες πληροφορίες για το αίτημα. Αυτό θα είναι ο τύπος αιτήματος και οι κεφαλίδες:

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

Η ιδιότητα body είναι προαιρετική για εμάς, πρέπει να την μεταφέρουμε μόνο αν έχουμε POST αίτημα. Για αυτό, μέσα στην client μετά τον κώδικα για το αντικείμενο options θα την προσθέσουμε στο options με το σώμα του αιτήματος σε μορφή JSON, εάν επιλεγεί η μέθοδος POST:

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

Στη συνέχεια, πιο κάτω στον κώδικα της client, θα οργανώσουμε ένα μπλοκ try, στην πρώτη γραμμή του οποίου χρησιμοποιώντας την fetch θα λάβουμε την απάντηση από τον διακομιστή. Σε περίπτωση αποτυχίας, παραδοσιακά θα επιστρέψουμε μια Promise με σφάλμα:

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

Τώρα ας συμπληρώσουμε τον κώδικα στο μπλοκ try. Αφού λάβουμε την response, πρέπει να την επεξεργαστούμε. Θα εξαγάγουμε από αυτήν τα δεδομένα σε JSON και αν η κατάσταση της απάντησης μας σηματοδοτεί ότι όλα είναι εντάξει, τότε θα επιστρέψουμε ένα αντικείμενο με τα δεδομένα και πληροφορίες: κατάσταση, κεφαλίδες και διεύθυνση. Εάν όμως η κατάσταση δεν είναι 'ok', τότε θα πετάξουμε μια εξαίρεση με το κείμενο της κατάστασης:

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 είναι έτοιμος, απομένει μόνο να γράψουμε πώς θα λειτουργούν οι μέθοδοι μας GET και POST κατά την κλήση. Ας γράψουμε τον κώδικα για αυτές μετά τη συνάρτηση client. Η μέθοδος client.get θα λαμβάνει ως παράμετρο τη διαδρομή και θα καλεί τη συνάρτηση client, περνώντας της αυτή τη διαδρομή και τον τύπο αιτήματος GET:

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

Και η client.post θα πρέπει να μεταβιβάζει για την client τη διαδρομή, τον τύπο αιτήματος POST και το σώμα του αιτήματος:

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

Σε αυτό το σημείο, ο μικρός μας πελάτης είναι έτοιμος για δουλειά με τον διακομιστή.

Ανοίξτε την εφαρμογή σας με τους μαθητές, δημιουργήστε σε αυτήν στον φάκελο api το αρχείο client.js. Αφού μελετήσετε τα υλικά του μαθήματος γράψτε (αντιγράψτε) τον κώδικα της συνάρτησης client και των δύο μεθόδων της client.get και client.post.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη