⊗jsrxPmSDIM 37 of 57 menu

Installazione di msw per lavorare con la parte server in Redux

Nelle lezioni precedenti abbiamo apportato diverse modifiche aggiuntive alla nostra applicazione. Ora dobbiamo occuparci del server con cui la nostra applicazione scambierà dati.

Non avremo un server reale, quindi simuleremo semplicemente il lavoro con esso, utilizzando uno strumento fantastico Mock Service Worker. Mock Service Worker (MSW) è uno strumento per imitare le API che utilizza un'API standardizzata Service Worker, progettata per intercettare le richieste a livello di rete. MSW genererà risposte fittizie (responses) alle nostre richieste (requests). Inoltre, come affermano gli sviluppatori, lo strumento è così efficace e flessibile che dopo il debug con i mock (per i quali nell'applicazione non è necessario creare nulla di speciale), l'applicazione può essere messa in funzione con un server esterno reale. La documentazione è piuttosto ampia e, se sei interessato a MSW, puoi leggerla sul sito ufficiale.

Passiamo all'installazione di msw. Per fare questo, apriamo il nostro progetto sui prodotti e nel terminale inseriamo:

npm install msw --save-dev

Per far funzionare msw dobbiamo anche creare e copiare mockServiceWorker.js in una directory pubblica. Spesso è la cartella public. Noi abbiamo una cartella vuota public, copiamolo lì. Per fare questo, esegui nel terminale il comando e poi accetta l'uso di public:

npx msw init public

Ora diamo un'occhiata in public, lì dovrebbe apparire lo script generato mockServiceWorker.js. Ora avviamo la nostra applicazione sui prodotti e nella barra degli indirizzi del browser inseriamo http://localhost:5173/mockServiceWorker.js (visto che la nostra applicazione è in esecuzione sulla porta 5173). Vedi nel browser che viene visualizzato il contenuto del file mockServiceWorker.js? Ottimo, proseguiamo.

Successivamente, creiamo nella cartella src una cartella api, e al suo interno un file server.js, in cui scriveremo il codice del server. Ora apriamo server.js e importiamo in esso la funzione setupWorker dalla libreria msw installata:

import { setupWorker } from 'msw/browser'

Sotto nel file creiamo una variabile worker e esportiamola:

export const worker = setupWorker()

E ora apriamo il file main.jsx e importiamo il nostro worker:

import { worker } from './api/server'

Ora colleghiamolo alla nostra applicazione. Per fare questo, il codice con cui creiamo la radice della nostra applicazione React, lo wrapperemo in una funzione, chiamiamola main e come prima riga aggiungiamo ad essa la funzione di avvio per il worker. Naturalmente non dimentichiamo di chiamare la main stessa. Il codice completo dopo tutte le righe di import sarà ora così:

async function main() { await worker.start({ onUnhandledRequest: 'bypass' }) ReactDOM.createRoot(document.getElementById('root')).render( <React.StrictMode> <Provider store={store}> <App /> </Provider> </React.StrictMode> ) } main()

Ora siamo sicuri che la nostra applicazione non inizierà a funzionare prima (e a inviare richieste ;) ), che il worker sia avviato.

Avviamo la nostra applicazione e apriamo nel browser la console per sviluppatori. Se vedi in essa il testo '[MSW] Mocking enabled.', allora sei bravo e hai installato tutto correttamente!!!

Apri la tua applicazione con gli studenti. Dopo aver familiarizzato con il materiale di questa lezione, installa Mock Service Worker per la tua applicazione.

Crea un file server.js, e in esso crea un worker. Collega il worker all'applicazione in main.js, come mostrato nella lezione. Assicurati che tutto funzioni.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta