⊗jsrxPmSDIM 37 of 57 menu

Instalace MSW pro práci se serverovou částí v Reduxu

V předchozích lekcích jsme provedli několik dalších změn v naší aplikaci. Nyní se potřebujeme vypořádat se serverem, s kterým bude naše aplikace komunikovat.

Skutečný server mít nebudeme, proto budeme jeho práci pouze simulovat pomocí skvělé nástroje Mock Service Worker. Mock Service Worker (MSW) je nástroj pro simulaci API, který používá standardizované API Service Worker, určené k zachycení požadavků na síťové úrovni. MSW bude generovat falešné odpovědi (responses) na naše požadavky (requests). Přitom, jak tvrdí vývojáři, je nástroj tak efektivní a flexibilní, že po ladění s mocky (pro které v aplikaci není potřeba vytvářet nic speciálního), lze aplikaci spustit do provozu s již skutečným externím serverem. Dokumentace k němu je poměrně rozsáhlá, a pokud vás MSW zaujme, můžete si ji přečíst na oficiálních stránkách.

Pojďme přejít k instalaci MSW. K tomu otevřeme náš projekt s produkty a v terminálu zadáme:

npm install msw --save-dev

Pro práci MSW také potřebujeme vytvořit a zkopírovat mockServiceWorker.js do nějaké veřejné složky. Často je to složka public. My máme prázdnou složku public, pojďme ji tam zkopírovat. K tomu spusťte v terminálu příkaz a poté souhlaste s použitím public:

npx msw init public

Nyní nahlédneme do public, tam by se měl objevit vygenerovaný skript mockServiceWorker.js. Nyní spusťme naši aplikaci s produkty a v adresním řádku prohlížeče zadáme http://localhost:5173/mockServiceWorker.js (protože naše aplikace běží na portu 5173). Vidíte, že v okně prohlížeče se zobrazil obsah souboru mockServiceWorker.js? To znamená, že je vše skvělé, jdeme dál.

Dále pojďme ve složce src vytvořit složku api, a v ní soubor server.js, ve kterém budeme psát kód serveru. Nyní otevřeme server.js a importujeme do něj funkci setupWorker z nainstalované knihovny MSW:

import { setupWorker } from 'msw/browser'

Níže v souboru vytvoříme proměnnou worker a exportujeme ji:

export const worker = setupWorker()

A nyní pojďme otevřít soubor main.jsx a importovat do něj našeho workera:

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

Nyní jej připojíme k naší aplikaci. K tomu kód, pomocí kterého vytváříme kořen naší React aplikace, obalíme funkcí, nazveme ji main a na prvním řádku do ní přidáme funkci spuštění pro workera. Samozřejmě nezapomeneme zavolat i samotné main. Úplný kód po všech řádcích s importem bude nyní vypadat takto:

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

Nyní jsme si jisti, že naše aplikace nezačne pracovat dříve (a odesílat požadavky ;) ), než se spustí worker.

Spusťme naši aplikaci a otevřeme v prohlížeči konzoli pro vývojáře. Pokud v ní vidíte text '[MSW] Mocking enabled.', jste skvělí a vše jste nainstalovali správně!!!

Otevřete vaši aplikaci se studenty. Seznámíte-li se s materiálem této lekce, nainstalujte Mock Service Worker pro vaši aplikaci.

Vytvořte soubor server.js, a v něm vytvořte workera. Připojte worker k aplikaci v main.js, jak je ukázáno v lekci. Ujistěte se, že vše funguje.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout