instant-mock
instant-mock is a quick and easy web API mock server.
Installing globally
Installation via npm:
npm install -g instant-mock
Usage
mkdir mymockcd mymockinstant-mock initinstant-mock
You can open http://localhost:3000 to view the instant-mock web console.
All mock API is mounted on http://localhost:3000/mock.
Please try GET to http://localhost:3000/mock/users by curl or web browser. It is sample mock API created by instant-mock init
.
Configuration
Servce configuration is wrote on server.yml
http: host: localhost port: 3000 socket: host: localhost port: 3010
Creating your mocks
API definition
You can create mock definition file to mock
directory.
Mock API URL is auto generated by directory path.
mock/api-name/@METHOD
is mapped to METHOD: http://localhost:3000/mock/api-name
METHOD
can use get/post/put/patch/delete.
If you need route parameters, can use PARAM
directory.
mock/api-name/$id/@get
is mapped to GET: http://localhost:3000/mock/api-name/:id
Request parser
Request for mock is parsed by user definition parser file. User definition parser file name start with "parser-" and format is yaml or js.
Try create a parser file below, and access to http://localhost:3000/mock/books
after restart the instant-mock.
/mock/books/@get/parser-default.yml:
status: 200 # Response status code.headers: # Response headers. Content-Type: application/textrawBody: 'test body' # Response body.
Define the response body to other file
You can define response body to a any file.
./mock/books/@get/body.json:
./mock/books/@get/parser-default.yml:
status: 200headers: Content-Type: application/jsonbody: 'body.json' # Response body file.
Change a reponse by request
Parser file can define multiple resonse for switing by request. Define request parsing rule to if
, and response to then
.
Try create a parser file below, and access to http://localhost:3000/mock/books/:id
after restart the instant-mock.
If :id
is "1" then response body is "user 1", and if it is "3" then response is 404.
./mock/books/$id/@get/parser-default.yml:
- if: params: id: 1 then: rawBody: 'book 1' - if: params: id: 2 then: rawBody: 'book 2' - then: status: 404
if
is can use params/query/body, and it is "and" condition.
- params: Route parameter.
- query: Query string parameter.
- body: Parsed json body parameter.
Advanced parser
YAML format parser is support simple rule only. Use a js parser if you need more advanced rules.
./mock/shelves/:id/@get/parser-default.js:
exports { return status: 200 headers: 'content-type': 'application/text' rawBody: 'your book is ' + reqparamsid ;};
Web console
You can open http://localhost:3000 to view the instant-mock web console. Web console can change parser, and show mock api access logs.