当前位置: 首页 > 软件库 > 开发工具 > 测试工具 >

mocker-api

为REST API创建模拟API
授权协议 MIT
开发语言 JavaScript
所属分类 开发工具、 测试工具
软件类型 开源软件
地区 不详
投 递 者 施阳曜
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

mocker-api 为 REST API 创建模拟 API。 当您尝试在没有实际 REST API 服务器的情况下测试应用程序时,它会很有用。

特征:

��内置支持热Mocker文件替换。
��通过JSON快速轻松地配置API。
��模拟API代理变得简单。
��可以独立使用,无需依赖webpack和webpack-dev-server。

快速开始

mkdir mocker-app && cd mocker-app

# Create a mocker configuration file based on rules
touch api.js

# Global install dependent.
npm install mocker-api -g
# Run server
mocker ./api.js

安装

你可以将 package.json 配置作为当前项目依赖项。

npm install mocker-api --save-dev

使用

mocker-api 在开发模式支持模拟数据, 将入口文件放入 mocker/index.js.

您可以通过添加 httpProxy 配置来修改 http-proxy 选项并添加事件侦听器

const proxy = {
  // Priority processing.
  // apiMocker(app, path, option)
  // This is the option parameter setting for apiMocker
  _proxy: {
    proxy: {
      '/repos/(.*)': 'https://api.github.com/',
      '/:owner/:repo/raw/:ref/(.*)': 'http://127.0.0.1:2018'
    },
    changeHost: true,
    // modify the http-proxy options
    httpProxy: {
      options: {
        ignorePath: true,
      },
      listeners: {
        proxyReq: function (proxyReq, req, res, options) {
          console.log('proxyReq');
        },
      },
    },    
  },
  // =====================
  'GET /api/user': {
    id: 1,
    username: 'kenny',
    sex: 6
  },
  'GET /api/user/list': [
    {
      id: 1,
      username: 'kenny',
      sex: 6
    }, {
      id: 2,
      username: 'kenny',
      sex: 6
    }
  ],
  'GET /api/:owner/:repo/raw/:ref/(.*)': (req, res) => {
    const { owner, repo, ref } = req.params;
    // http://localhost:8081/api/admin/webpack-mock-api/raw/master/add/ddd.md
    // owner => admin
    // repo => webpack-mock-api
    // ref => master
    // req.params[0] => add/ddd.md
    return res.json({
      id: 1,
      owner, repo, ref,
      path: req.params[0]
    });
  },
  'POST /api/login/account': (req, res) => {
    const { password, username } = req.body;
    if (password === '888888' && username === 'admin') {
      return res.json({
        status: 'ok',
        code: 0,
        token: "sdfsdfsdfdsf",
        data: {
          id: 1,
          username: 'kenny',
          sex: 6
        }
      });
    } else {
      return res.status(403).json({
        status: 'error',
        code: 403
      });
    }
  },
  'DELETE /api/user/:id': (req, res) => {
    console.log('---->', req.body)
    console.log('---->', req.params.id)
    res.send({ status: 'ok', message: '删除成功!' });
  }
}
module.exports = proxy;

参数选项

  • proxy => {} Proxy settings.
  • changeHost => {} Setting req headers host.
  • httpProxy => {} Set the listen event and configuration of http-proxy
  • bodyParserJSON JSON body parser
  • bodyParserText Text body parser
  • bodyParserRaw Raw body parser
  • bodyParserUrlencoded URL-encoded form body parser
  • bodyParserConf => {} bodyParser settings. eg: bodyParserConf : {'text/plain': 'text','text/html': 'text'} will parsed Content-Type='text/plain' and Content-Type='text/html' with bodyParser.text

⚠️ 没有通配符 * - 使用参数 (.*), suport v1.7.3+

延迟反应

你可以使用工具自带方法增强模拟. #17

const delay = require('mocker-api/utils/delay');
const noProxy = process.env.NO_PROXY === 'true';

const proxy = {
  'GET /api/user': {
    id: 1,
    username: 'kenny',
    sex: 6
  },
  // ...
}
module.exports = (noProxy ? {} : delay(proxy, 1000));

apiMocker

apiMocker(app, mocker[,proxy])

多入口mocker 文件监听

const mockerFile = ['./mock/index.js'];
// or
// const mockerFile = './mock/index.js';
apiMocker(app, mockerFile, proxy)

在命令行中使用

Base example

⚠️ Not dependent on webpack and webpack-dev-server.

# Global install dependent.
npm install mocker-api -g
# Run server
mocker ./mocker/index.js

Or you can put it the package.json config as a current project dependency.

{
  "name": "base-example",
  "scripts": {
+    "api": "mocker ./mocker"
  },
  "devDependencies": {
+    "mocker-api": "^1.6.4"
  },
  "license": "MIT"
}

在 Express 中使用

Express example

⚠️ Not dependent on webpack and webpack-dev-server.

const express = require('express');
+ const path = require('path');
+ const apiMocker = require('mocker-api');

const app = express();

+ apiMocker(app, path.resolve('./mocker/index.js'))
app.listen(8080);

在 Webpack 中使用

webpack example

To use api mocker on your Webpack projects, simply add a setup options to your webpack-dev-server options:

Change your config file to tell the dev server where to look for files: webpack.config.js.

const HtmlWebpackPlugin = require('html-webpack-plugin');
+ const path = require('path');
+ const apiMocker = require('mocker-api');

module.exports = {
  entry: {
    app: './src/index.js',
    print: './src/print.js'
  },
  devtool: 'inline-source-map',
+ devServer: {
+   ...
+   before(app){
+     apiMocker(app, path.resolve('./mocker/index.js'), {
+       proxy: {
+         '/repos/*': 'https://api.github.com/',
+         '/:owner/:repo/raw/:ref/*': 'http://127.0.0.1:2018'
+       },
+       changeHost: true,
+     })
+   }
+ },
  plugins: [
    new HtmlWebpackPlugin({
      title: 'Development'
    })
  ],
  output: {
    filename: '[name].bundle.js',
    path: require.resolve(__dirname, 'dist')
  }
};

Must have a file suffix! For example: ./mocker/index.js.

Let's add a script to easily run the dev server as well: package.json

  {
    "name": "development",
    "version": "1.0.0",
    "description": "",
    "main": "webpack.config.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
+     "start": "webpack-dev-server --open",
      "build": "webpack"
    },
    "keywords": [],
    "author": "",
    "license": "MIT",
    "devDependencies": {
      ....
    }
  }

模拟API代理简单模式。

{
  before(app){
+   apiMocker(app, path.resolve('./mocker/index.js'), {
+     proxy: {
+       '/repos/*': 'https://api.github.com/',
+     },
+     changeHost: true,
+   })
  }
}

 

 

  • 1. 安装依赖:npm i mocker-api mockjs -D 2. 在development模式对应的webpack配置下添加: before(app, server) { // console.log('MOCK', process.env) if(process.env.MOCK) { // mocker-api apiMocker(app, path.reso

  • 工具链接: https://github.com/gstroup/apimocker 背景: QA在内网部署服务器环境,但系统涉及服务太多,无法部署所有服务,并且ABTest(Maestro)服务使用Google OAuth做授权认证,测试环境没有域名,无法搭建实际的Maestro服务。在后端(one-eye)服务的代码中,每次对Maestro服务的请求均返回特定的json字符串,因此这种情况非常

  • webpack-api-mocker是一个为 REST API创建 mock 的webpack-dev-server中间件。 当您尝试在没有实际的 REST API服务器的情况下,测试您的应用程序时,这将会很有帮助。 安装 npm install webpack-api-mocker --save-dev 使用 定义API,假设我们讲API放到一个独立文件 mocker/index.js 中,

  • API Mocker 先贴上项目地址:DXY-F2E/api-mocker 随着web发展,前后端分离的演进,网页的交互变的越来越复杂。在项目开发过程中,前后端并行开发时,在涉及到接口的部分,总是遇到各类问题。诸如接口假数据、接口参数的约定、代理调试等等,极大的影响了开发效率。 API Mocker致力于解决前后端开发协作过程中出现的各类问题,提高开发效率,对接口做统一管理,同时也能为后续的迭代维

  • IT实战联盟博客:http://blog.100boot.cn mocker-api 为 REST API 创建模拟 API。 当您尝试在没有实际 REST API 服务器的情况下测试应用程序时,它会很有用。 特征: 内置支持热 Mocker 文件替换。 通过 JSON 快速轻松地配置API。 模拟 API 代理变得简单。 可以独立使用,无需依赖 webpack 和webpack-dev-

 相关资料
  • 我在micronaut中有以下接口来执行HTTP POST请求: 我有一个调用接口的类: 我想在我的spock测试中模拟/存根API调用,我尝试了以下方法: 然而,我得到的错误:

  • 我是一个新的android,当我点击运行按钮创建AVD时,它出现如下,我不能理解它说什么,请帮助我理解它是什么意思,我如何解决这个问题 C:\users\neil\appdata\local\android\sdk2\tools\emulator.exe-avd Nexus_S_API_21-netspeed full-netdelay none使用参数创建文件系统:无法获取wglGetExten

  • 我想通过JDBC创建一个不存在的数据库。与MySQL不同,PostgreSQL不支持语法。实现这一点的最佳方法是什么? 应用程序不知道数据库是否存在。它应该检查,如果数据库存在,应该使用它。因此,连接到所需的数据库是有意义的,如果由于数据库不存在而导致连接失败,则应创建新数据库(通过连接到默认的postgres数据库)。我检查了Postgres返回的错误代码,但找不到任何相关的代码。 实现这一点的

  • 我正在尝试使用最新的ADT(21)和SDK工具为Nexus10创建android模拟器。Nexus 10 AVD的配置如下: 如果这个配置不对,请告诉我。创建上述配置后,我能够创建AVD,但无法加载它。它只显示一个黑屏。这里会有什么问题? 我使用的是Ubuntu11.10。

  • 我正在使用JBoss 9. x应用服务器,我想创建一个REST api来与我的EJB通信。我创建了两个类PlayerRestApi和PlayerEJB,并将其部署到野蝇,但是当我请求 /player响应总是404。 注意:我将发布带有虚拟返回的PlayerRestApi类。 PlayerRestApi代码: 当我尝试此路线时,localhost:http://localhost:28070/app

  • 问题内容: 我有以下课程: 和测试类: 如何在MyClass中将Apple实例作为模拟注入? 问题答案: 您可以通过3种方式解决此问题: 抽象工厂 :使用具体的工厂类,而不是使用静态方法: 在测试类中,模拟工厂: PowerMock :使用PowerMock创建静态方法的模拟。查看我对一个相关问题的答案,看看它是如何完成的。 可测试的类 :将创建的内容包装在方法中,并创建一个覆盖它的测试类: 当然