1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wll8-mockm

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

Фреймворк, основанный на Express. Он может быстро генерировать API и создавать данные, готовые к развертыванию сразу после установки.

Китайский | Английский

Загрузки Версия Лицензия

Список записей запросов

Попробуйте

  1. Установка: Выполните команду npm i -g mockm в командной строке
  2. Запуск: Выполните команду mm --config в командной строке

Все работы завершены, вы создали свой собственный API, который позволяет делать запросы с��越多段落的文本后,可以将其完全翻译成俄文如下所示:


Фреймворк, основанный на Express. Он может быстро генерировать API и создавать данные, готовые к развертыванию сразу после установки.

Китайский | Английский

Загрузки Версия Лицензия

Список записей запросов

Попробуйте

  1. Установка: Выполните команду npm i -g mockm в командной строке
  2. Запуск: Выполните команду mm --config в командной строке

Все работы завершены, вы создали свой собственный API, который позволяет делать запросы с кросс-доменной поддержкой, имеет функцию записи запросов и возможность повторного воспроизведения...

Для быстрого понимания, параметр --config создаёт простой пример конфигурационного файла mm.config.js, который можно просмотреть и исследовать его возможности!

Примеры функциональности

Вот несколько примеров конфигураций для различных сценариев, включая различные прокси и перехватчики, API-ы и методы создания данных. Подробнее о конфигурациях, пожалуйста, прочитайте описание опций.### Как включить поддержку CORS для backend API

Не требуется настраивать webpack, изменения со стороны сервера или использование плагинов браузера

Эта функция поддерживается mockm по умолчанию. Вы можете запустить mockm самым простым способом, выполнив следующую команду в командной строке:

mm proxy=http://192.168.1.18:8080

Вы также можете использовать метод конфигурационного файла. Создайте файл mm.config.js и введите следующее содержимое, затем выполните команду mm в командной строке:

module.exports = {
  прокси: `http://192.168.1.18:8080`,
};

Затем замените исходный адрес запроса на свой собственный. Например, если ваш IP — Yöntem 127.0.0.1, выполните следующие изменения:

Как создать собственный API

Когда это тот же самый API, что и backend API, будет использоваться ваш собственный API

Давайте создадим API самым простым образом:

module.exports = {
  api: {
    "/моё/api": {
      msg: `Мой API`,
    },
  },
};

API теперь доступен по адресу http://127.0.0.1:9000/моё/api и вы можете увидеть его работу.

Подробнее см. в разделе конфигурация API. Для удобства работы с коллегами API также можно создавать через веб-интерфейс. Подробнее см. в разделе редактирование интерфейсов.

Как получать информацию о запросах от API

Когда вам нужно возвращать различные данные в зависимости от значений, переданных в API, это также легко реализовать:

module.exports = {
  api: {
    "/моё/значение": function(req, res) {
      // req.params — это параметры пути в URL
      // req.query — это параметры запроса в URL
      // req.body — это параметры в теле запроса
      res.json({ desc: `Переданное значение`, data: req.query });
    },
  },
};
```Следующим шагом является обращение к API и передача некоторых параметров URL для тестирования. Например, http://localhost:9000/моё/значение?город=Шанхай вернёт:

```json
{
  "desc": "Переданное значение",
  "query": {
    "город": "Шанхай"
  }
}

Как быстро генерировать RESTful API

Предположим, мне нужно создать список статей блога и реализовать различные функциональности для этих API, такие как добавление статей, поиск статей, пагинация, размытое поисковое слово, удаление, модификацию и т.д. Все, что вам нужно сделать, это добавить следующий контент:

module.exports = {
  база_данных: {
    статьи: [
      {
        id: 1,
        содержание: `mockm — это удобный и гибкий инструмент для создания интерфейсов. Вид красивый~`,
        заголовок: `Первый день знакомства с mockm`,
      },
    ],
  },
};

Все интерфейсы, которые требуются для реализации выше, уже были созданы. Здесь я использую httpie как инструмент запросов, чтобы кратко продемонстрировать несколько возможностей. Вы можете использовать любой другой предпочитаемый инструмент для отправки запросов.

# Просмотреть детали блога с ID 1
http :9000/blogs/1

# Создать статью о коллегах
http post :9000/blogs title="День Коллег" content="Сегодня его жизнь остаётся такой же горечью"

# Получить все статьи
http :9000/blogs

# Поиск статей содержащих слово 'горечь'
http :9000/blogs?q=горечь
```# Просмотреть детали блога с ID 1
http :9000/blogs/1

# Создать статью о коллегах
http post :9000/blogs title="День Коллег" content="Сегодня его жизнь остаётся такой же горечью"

# Получить все статьи
http post :9000/blogs

# Поиск статей содержащих слово 'горечь'
post :9000/blogs\?q=горечь

---

Для получения всех сгенерированных интерфейсов обратитесь к [config.db](https://hongqiye.com/doc/mockm/config/option.html#config-db).

### Как генерировать реалистичные данные

[mockjs](https://wll8.github.io/mockjs-examples/) — это отличный инструмент для генерации данных. Mockm использует его по умолчанию. Ниже приведён пример кода, который генерирует пакет информации о пользователях с помощью mockjs.

```js
module.exports = (util) => {
  return {
    db: {
      users: util.libObj.mockjs.mock({
        "data|15-23": [
          // Генерация от 15 до 23 случайных записей
          {
            "id|+1": 1, // id начинается с 1 и увеличивается на 1
            name: `@cname`, // Генерация случайных китайских имён
            "sex|1": ["Мужской", "Женский", "Неизвестный"], // Случайный выбор одного из этих трёх полов
          },
        ],
      }).data,
    },
  };
};

Теперь вы можете получить доступ к http://localhost:9000/users чтобы просмотреть большое количество реалистичных данных о пользователях.

Как изменять возвращаемые данные серверной части

В большинстве случаев непросто напрямую менять данные на серверной стороне, так как это требует много логики. Написание этого напрямую в коде на клиентской стороне является трудоёмким и склонным к ошибкам.Предположим, что ответ GET запроса к серверному интерфейсу http://192.168.1.18:8080/api/user имеет следующий вид:

{
  "code": 200,
  "data": {
    "books": [
      {
        "page": 52,
        "type": "css"
      },
      {
        "page": 26,
        "type": "js"
      }
    ],
    "name": "张三"
  },
  "success": true
}

Если вы хотите изменить тип книги с индексом 1 на html, конфигурация будет следующей:

module.exports = {
  proxy: {
    "/": `http://192.168.1.18:8080`,
    "/api/user": [`data.books[1].type`, `html`], // Первый параметр массива представляет собой путь для изменения, а второй параметр — новое значение
  },
};

Если вы хотите полностью заменить возвращаемое значение на html, это можно сделать следующим образом:

module.exports = {
  proxy: {
    "/": `http://192.168.1.18:8080`,
    "/api/user": [`html`], // Если предоставляется только один параметр, он будет заменён напрямую
  },
};

Для получения более подробной информации обратитесь к config.proxy.

Как задержать время ответа серверного интерфейса

Чтобы задержать время ответа интерфейса http://192.168.1.18:8080/api/user на 5 секунд, выполните следующие действия:

module.exports = {
  proxy: {
    "/": `http://192.168.1.18:8080`,
    "/api/user": {
      mid(req, res, next) {
        setTimeout(next, 5000);
      },
    },
  },
};

Как создать интерфейс для скачивания файла

Реализуйте интерфейс для скачивания файла http://127.0.0.1:9000/file и отправьте конкретный файл клиенту.

module.exports = {
  api: {
    "/file"(req, res, next) {
      res.download(`Укажите путь к файлу здесь`);
    },
  },
};
```### Как создать интерфейс для работы с WebSockets

Реализуйте интерфейс для работы с WebSockets ws://127.0.0.1:9000/wsecho, при установлении соединения отправьте "Подключение успешно", а также отразите сообщение, отправленное клиентом, обратно клиенту.

```js
api: {
  'ws /wsecho': function(ws, req) {
    ws.send(`Подключение успешно`);
    ws.on('message', function(msg) {
      ws.send(msg);
    });
  }
},

Клиентский код подключения, который может быть проверен непосредственно в консоли браузера:

function startWs(wsLink) {
  window.ws = new WebSocket(wsLink);
  ws.onopen = function(evt) {
    ws.send(`Сообщение, отправленное клиентом`);
  };
  ws.onmessage = function(evt) {
    console.log(`Сообщение, полученное от сервера`, evt.data);
  };
  ws.onclose = function(evt) {
    // Перезапуск
    setTimeout(function() {
      startWs(wsLink);
    }, 1000);
  };
}
startWs(`ws://127.0.0.1:9000/wsecho`);
// ws.send(`Отправка нового сообщения`)

Как реализовать динамический параметр пути интерфейса

Реализуйте интерфейс http://127.0.0.1:9000/status/code, где "code" является динамическим параметром в URL, и он возвращает полученный код.

module.exports = {
  api: {
    '/status/:code': function(req, res, next) {
      const { params, query, body } = req;
      res.json({ statusCode: params.code });
    },
  },
};

Как отображать параметры интерфейса в бэкенд

Больше нет скриншотов, вопросов туда-сюда и невозможности копировать параметры

По умолчанию каждый запрос генерирует ссылку в заголовке ответа как x-test-api. Просто отправьте эту ссылку в бэкенд.

  • Метод 1 Вы можете видеть её непосредственно на командной строке при запуске mockm.- Метод 2 Найдите её в списке на странице http://127.0.0.1:9005.

  • Метод 3 Если вы используете Chrome Developer Tools, вы можете найти запрошенный интерфейс в разделе Network и найти x-test-api в заголовках ответа.

Как использовать интерфейс удалённо

Установите config.remote в значение true для создания публичного интерфейса с доменным именем и сертификатом HTTPS. Это позволит вам использовать его на официальных аккаунтах WeChat или делиться им с другими для удалённого использования.

Информация о "удалённом сервисе" будет отображаться в консоли, а также x-test-api и интерфейсы будут генерировать соответствующие ссылки для удалённого доступа.

Как восстановить ранее работавший, но теперь сломанный бэкенд-интерфейс

Если какой-то интерфейс ранее работал, но теперь сломан из-за проблем, которые бэкенд ещё не успел исправить, а фронтенд имеет страницы, зависящие от этого интерфейса, что делать?

На странице http://127.0.0.1:9005 выберите хорошую историю запросов, соответствующую этому интерфейсу, и щёлкните по "webApi => Используйте эту запись".

Как защитить страницы от влияния бэкенда, когда он недоступен

Содержание, отображаемое на страницах, берётся из данных. Если сервер бэкенда имеет проблемы и все интерфейсы недоступны, можно изменить адрес запроса на http://127.0.0.1:9001, чтобы страницы могли использовать данные, ранее возвращенные сервером.## Управление MockM через UI

Вы также можете создавать интерфейсы или управлять историей запросов через ввод в UI. Ниже приведены некоторые скриншоты, обратитесь к инструкциям UI для подробной документации.

Детали записи запроса
Детали записи запроса

История запросов для определённого API
История запросов для определённого API

Создание API через UI
Создание API через UI

Различия

Инструмент Описание Примечания
mockjs Интерцепт запросы XHR в фронтенде и генерировать данные Запрос не виден в консоли сети
json-server Генерация RESTful API с использованием JSON Нет встроенной возможности генерации данных
yapi/rap2 Управление документацией API и генерация интерфейсов и данных Сложность установки и синхронизация с проектами фронтенда

Ссылки| Проект | Описание |

| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | taroify | Taroify — это версия мобильной библиотеки компонентов Vant для Taro. Оба основаны на одной визуальной спецификации и предоставляют согласованные API-интерфейсы для помощи разработчикам быстро создавать мини-приложения. |## Лицензия

MIT

Авторское право © 2017—настоящее время, xw

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Объединяет в себе функции моделирования и отладки. Автоматически генерирует данные и серию интерфейсов для вставки, удаления, изменения и поиска, поддерживает загрузку и скачивание файлов, задержку, настраиваемую логику интерфейса... Развернуть Свернуть
JavaScript и 4 других языков
MIT
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wll8-mockm.git
git@api.gitlife.ru:oschina-mirror/wll8-mockm.git
oschina-mirror
wll8-mockm
wll8-mockm
dev