Mock Json Server
Create a mock server using a json file.
Installation
To install, you need to have NodeJS and NPM installed on your system. Go to https://nodejs.org/en/, download and install one of the provided versions. Both NodeJS and NPM are included.
Install the mock-json-server package by running npm install -g mock-json-server
in your terminal.
Using npm v5.6.0 or later? You can skip global installation and directly run npx mock-json-server data.json
in a folder containing the below explained data.json
.
Thats it!
Example
To run the server run: mock-json-server data.json
This starts a server on http://localhost:8000/
you can change the port by running mock-json-server data.json --port=3000
data.json
contains:
{
"/home": {
"get": {
"data": [
{"id":1,"name": "Steve"}
]
},
"post": {
"data": [
{"id":1,"name": "Steve French"}
]
}
}
}
A Get Request to http://localhost:8000/home will return.
{
"data": [
{"id":1,"name": "Steve"}
]
}
A Post Request to http://localhost:8000/home will return.
{
"data": [
{"id":1,"name": "Steve French"}
]
}
Docker
Mock json server is also a docker image. Run it with the command
docker run --name mock-json-server -v $(pwd)/test/data.json:/usr/src/app/data.json -p 8000:8000 ajoelpod/mock-json-server
Changing the port
Run the same command as above but with the PORT
environment variable. Also change the -p to be equal to your new port.
docker run --name mock-json-server --env PORT=3000 -v $(pwd)/test/data.json:/usr/src/app/data.json -p 3000:3000 ajoelpod/mock-json-server
or
Just change the forwared ports
docker run --name mock-json-server -v $(pwd)/test/data.json:/usr/src/app/data.json -p 3000:8000 ajoelpod/mock-json-server
Docker Compose
Example.
version: '3'
services:
mock-json:
image: 'ajoelpod/mock-json-server'
volumes:
- ./test/data.json:/usr/src/app/data.json
ports:
- 8000:8000
Running Programmatically
const server = require('mock-json-server');
const app = server({
"/home": {
"get": {
"data": [{ "id": 1, "name": "Steve" }]
},
"post": {
"data": [{ "id": 1, "name": "Steve French" }]
}
},
"/test/:id": {
"get": {
"data": [{ "id": 1, "name": "Steve" }]
},
"post": {
"data": [{ "id": 1, "name": "Steve French" }]
}
}
}, 8000);
app.start();
app.reload({ test : true });
app.stop();