mim-json-proxy
v1.5.6
Published
Man in the middle JSON proxy
Downloads
20
Readme
MIM JSON proxy
A tool which can be used as ‘man in the middle’ proxy. It can be used to sit between two JSON webservices endpoints (e.g. Facebook/Twitter and your application) to intercept the webservices traffic between them and modify it.
Features
- Possibility to mock entire response and/or request
- Possibility to mock only part of response and/or request
- Possibility to mock response status code
- Simulate delays on service calls
- Easy way to change endpoints on the fly (i.e. developer / staging)
- JSON based configuration with JS defined rules for flexibility
- JSON based configuration is backed up by JSON schema
Getting started (API)
- Install the proxy
npm i mim-json-proxy
- In the code
const JsonProxy = require('mim-json-proxy'); const proxy = new JsonProxy(options); proxy.start();
Getting started (command line)
- Install the proxy
npm install -g mim-json-proxy
- Usage:
mim-json-proxy {OPTIONS}
Examples
Examples can be found in the examples directory.
Options
Options are for API usage and the command line:
port
: port to open the server on (default3005
)configsDirectory
: defines proxy configurations directory (default./configs
)defaultConfigName
: defines default configuration name (defaultproxy-config.json
)configUI.enabled
: whether to enable the UI for easier proxy config adjustments (defaulttrue
)configUI.endpoint
: path for the config UI (default/config
)bodyParserLimit
: limit for express bodyParser (default5mb
)cors
: cors configuration to pass to express (default{credentials: true}
)https
: whether to start server using https or not (defaultfalse
)certificates.key
: HTTPS certificate key path (default./certificates/server.key
)certificates.cert
: HTTPS certificate CRT path (default./certificates/server.crt
)
API
start(options)
: starts the server with providedoptions
addController(path, controller)
: possibility to define custom controller on the server (i.e. replacing/config
)addDynamicRule(endpointName, func)
: add dynamic rule, thefunc
takes following as argument:{ requestBody, responseStatusCode, responseBody, isResponse, isRequest, reqURL, reqMethod }
Developer notes
- You can use
npm start
to run the proxy locally - Proxy runs on port 3005 by default to relay the communication to webservice. The
/config
endpoint can be used to adjust the configuration in simple UI configs/proxy-config.json
defines rules and endpointsproxy-config.schema.json
defines how the above file should look like