Задать вопрос
@Ezrayter

Что такое React Mock API? И как его использовать?

Доброго времени суток!

Есть react-приложение с axios запросами на сервер. Иногда случается так, что сервер перестает работать. Мне сказали за'mock'ать api методы на клиенте, дабы иметь возможность работать и без сервера.

Что это значит? Правильно ли я понимаю, что можно добавить код, который будет перехватывать api запросы и возвращать те данные, которые я укажу? Как я понимаю, это используется для тестирования (в интернете по запросу "react mock api" выдаются статьи по тестированию). А можно ли применить это не для тестирования, а для работы без активного сервера?

Буду благодарен за объяснения и ссылки на ресурсы, где можно почитать обо всем этом.
  • Вопрос задан
  • 6022 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
Что такое React Mock API?

такого апи нет. Реакту вообще все равно ходите вы на сервер или берете данные еще откуда-то

Можно замокать запросы и в приложении для работы без сервера, раз у вас axios, то смотрите как это лучше сделать для него.

вот первое что попалось: https://github.com/ctimmerm/axios-mock-adapter
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
Запрос к серверному api это асинхронные функции, которые посылают запрос и ждут ответа, соответственно вы можете подменить их на свои, например у вас есть объект с функциями серверного запроса

const serverAPI = {
  getCategories: () => fetch('/categories'),
  getCategory: (id) => fetch('/categories/' + id)
}


И есть моковые запросы с теми же самыми ключами, что и serverAPI

// Создадим базу данных
const mockDB = {
  categories: [
    { id: 1, name: 'products'}, 
    { id: 2, name: 'services'}
  ]
}

const mockAPI = {
  getCategories: () => Promise.resolve(mockDB.categories),
  getCategory:  (id) => Promise.resolve(mockDB.categories.find(v => v.id === id)),
}


И создайте объект
const currentAPI = serverAPI

все запросы из кода делайте к currentAPI, переключать его с мокового на нормальный и наоборот можно
Object.assign(currentAPI, mockAPI)
Object.assign(currentAPI, serverAPI)


Сохранять данные мокового DB можно в localStorage между сеансами. естественно это будет работать только локально
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽