Отправка данных с сервера по GET-запросу в Redux

Итак у нас есть база с данными. Первое, что мы будем делать при запуске нашего Redux приложения - это получать с сервера данные с продуктами. Для этого нам нужно из нашего приложения отправить GET-запрос. Давайте обработаем его на стороне сервера.

Откроем наше приложение с продуктами, а в нем файл server.js. Для того, чтобы работать с HTTP-запросами, нам нужно импортировать в файл несколько инструментов из msw, давайте сделаем это:

import { http, HttpResponse, delay } from 'msw'

Также сразу сделаем поправки на реальность, то есть возможные задержки в сети. Пусть значение нашей искусственной задержки будет составлять 2 секунды, чтобы мы видели как подгружаются данные. Напишем ее после const PRODS_PER_SELLER = 2:

const ARTIFICIAL_DELAY_MS = 2000

А теперь в конце файла перед экспортом воркера заведем массив для API обработчиков запросов:

export const handlers = []

И затем в квадратных скобочках напишем первый обработчик для перехвата GET-запроса продуктов:

export const handlers = [http.get()]

Первым параметром для http.get мы передадим какой-то фейковый адрес, например '/fakeServer/products', а вторым асинхронный callback:

export const handlers = [http.get('/fakeServer/products', async () => {})]

Теперь напишем код для этого callback. С помощью него мы извлечем все продукты из БД. Здесь мы также используем функцию serializeProduct, код которой мы написали на прошлом занятии. Давайте передадим ее в map. Затем сделаем задержку (как будто сеть тормозит) и вернем в response объекты с данными продуктов в виде json:

export const handlers = [ http.get('/fakeServer/products', async () => { const products = db.product.getAll().map(serializeProduct) await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(products) }), ]

И последний штрих. Мы написали первый handler для нашего воркера, давайте передадим этому воркеру массив handlers. Для этого исправим последнюю строчку кода в файле на:

export const worker = setupWorker(...handlers)

Откройте ваше приложение со студентами, а в нем файл server.js. Импортируйте в файл указанные инструменты из msw. Изучив материал данного урока, создайте пустой массив обработчиков для перехватов запросов. Напишите в нем код для обработчика GET-запроса студентов. В качестве пути пусть у вас будет '/fakeServer/students'.

В конце файла не забудьте передать массив обработчиков handlers воркеру.



Чат с GPT Компилятор