⊗jsrxPmSDIM 37 of 57 menu

Instalación de MSW para trabajar con el backend en Redux

En lecciones anteriores hicimos varios cambios adicionales en nuestra aplicación. Ahora necesitamos entender el servidor con el que nuestra aplicación intercambiará datos.

No tendremos un servidor real, por lo que simularemos trabajar con él usando una herramienta genial Mock Service Worker. Mock Service Worker (MSW) es una herramienta para simular API que utiliza una API estandarizada de Service Worker, diseñada para interceptar solicitudes a nivel de red. MSW generará respuestas falsas (responses) a nuestras solicitudes (requests). Además, como afirman los desarrolladores, la herramienta es tan efectiva y flexible que después de depurar con mocks (para los cuales no se requiere crear nada especial en la aplicación), la aplicación puede ponerse en funcionamiento con un servidor externo real. La documentación es bastante extensa y, si te interesa MSW, puedes leerla en el sitio web oficial.

Pasemos a instalar msw. Para ello abriremos nuestro proyecto de productos y en la terminal introduciremos:

npm install msw --save-dev

Para que msw funcione también necesitamos crear y copiar mockServiceWorker.js en algún directorio público. A menudo es la carpeta public. Nosotros tenemos una carpeta vacía public, copiemos el archivo allí. Para ello ejecuta en la terminal el comando y luego acepta el uso de public:

npx msw init public

Ahora echemos un vistazo a public, allí debería aparecer el script generado mockServiceWorker.js. Ahora ejecutemos nuestra aplicación de productos y en la barra de direcciones del navegador introduzcamos http://localhost:5173/mockServiceWorker.js (ya que nuestra aplicación funciona en el puerto 5173). ¿Ves que en la ventana del navegador se muestra el contenido del archivo mockServiceWorker.js? Entonces todo está genial, sigamos adelante.

A continuación, creemos en la carpeta src una carpeta api, y dentro de ella un archivo server.js, donde escribiremos el código del servidor. Ahora abramos server.js e importemos en él la función setupWorker de la biblioteca msw instalada:

import { setupWorker } from 'msw/browser'

Más abajo en el archivo crearemos la variable worker y la exportaremos:

export const worker = setupWorker()

Y ahora abramos el archivo main.jsx e importemos nuestro worker:

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

Ahora conectémoslo a nuestra aplicación. Para ello, envolveremos el código con el que creamos la raíz de nuestra aplicación React en una función, la llamaremos main y en la primera línea añadiremos la función de inicio para el worker. Por supuesto, no olvidemos llamar a la propia main. El código completo después de todas las líneas de importación ahora se verá así:

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

Ahora estamos seguros de que nuestra aplicación no comenzará a funcionar antes (y enviará solicitudes ;) ), de que se inicie el worker.

Ejecutemos nuestra aplicación y abramos en el navegador la consola para desarrolladores. Si ves en ella el texto '[MSW] Mocking enabled.', ¡¡¡entonces hiciste un gran trabajo y lo instalaste todo correctamente!!!

Abre tu aplicación de estudiantes. Habiendo revisado el material de esta lección, instala Mock Service Worker para tu aplicación.

Crea un archivo server.js, y en él crea un worker. Conecta el worker a la aplicación en main.js, como se muestra en la lección. Asegúrate de que todo funcione.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar