fake-http
For front-end developers who need a quick back-end for fake data.
Features
- fake data
- fake file download
- Matching by request URL and method
- Custom Response delay, status and headers
- Support third-party simulation data lib, like Mock.js and Faker.js
Install
npm install -g fake-http
Usage
1. Write fake data in source directory
data/user.js
moduleexports = request: url: '/user/:id' response: body: id: 123 name: 'Stephen' age: 30 ;
2. Start fake server
fake-http /data
3. Request URL
http://localhost:3000/user/1
CLI
fake-http options <source> Options: --config -c Path to config file --host -H Set host default: "localhost" --port -p Set port default: 3000 --watch -w Watch boolean --static -s Set staticdownload files directory
Config
Data format
You could add any js file or folder to source directory. Nested files are supported and use DFS.
// 'request' is use for matching response data request: // 'url' is use for compare request url. url: '/xxx/xxx' // require // 'method' is use for compare request method. method: 'get' // optional protocol: 'http' // optional // 'response' is use for set response data response: // require // 'delay' is use for delay response time. delay: 0 // default // 'status' is use for delay response time. status: 200 // default // 'headers' use for set response header. default to below. headers: // default 'Content-Type': 'application/json; charset=UTF-8' 'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' // 'body' is use for set response body, string, object and array are supported, if type to String and end with '.xxx' means this is a file path and root path is by --static argument, you can change it in default setting with "staticPath" option. body: // require ...
Default Settings
You could configure default setting in config file.
fake-http /data --config=fakeconfigjs
fake.config.js
var path = ; moduleexports = host: 'localhost' // default port: 3000 // default watch: false // default // store resources directory staticPath: path // optional // search order with fake data files. { return filenames; // default } // global response settings response: // will merge to your specific response headers. headers: // default 'Content-Type': 'application/json; charset=UTF-8' 'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
Routes
There are three pattern to match request url.
request: // matches /user/stephen and /user/ricky url: '/user/:name' // matches /files/hello.jpg and /files/world.png url: '/files/*.*' // matches /files/hello.jpg and /files/path/to/world.jpg url: '/**/*.jpg' ...
Example
Fake data
GET http://localhost:3000/user/list
moduleexports = request: url: '/user/list' method: 'get' response: delay: 2000 body: id: 123 name: 'Stephen' age: 30 id: 124 name: 'Ricky' age: 20 ;
fake-http /data
Fake file download
POST http://localhost:3000/download/sample ./data
moduleexports = request: url: '/download/:filename' method: 'get' response: delay: 1000 headers: 'Content-Type': 'text/plain' 'Content-Disposition': 'attachment;filename=sample.txt;' body: 'sample.txt' // store download file sample.txt to static directory(use --static argument to set). ;
fake-http /data --static=/static
Work with Mock.js
npm i mockjs
GET http://localhost:3000/user/list
var Mock = ; moduleexports = request: url: '/user/list' method: 'get' response: body: Mockdata ;
Work with Faker.js
npm i faker
GET http://localhost:3000/user/123
var faker = ; moduleexports = request: url: '/user/:id' method: 'get' response: body: id: fakerrandom name: fakername email: fakerinternet ;