The intention of this project was to create an a REST mock server, that you can run yourself locally during the development of front- and backend applications.
The idea of Vombatidae is that you can generate multiple endpoints (they are called burrow in the code) by asking the server for a new one. The server will return a Guid that identifies this particular endpoint. With this Guid you are able to prepare rest response messages with JSON bodies for the following REST verbs GET, POST, PUT, DELETE. At the moment it is only possible to prepare one response per verb and configure the status code that is used.
Vombatidae also allows to query this history of an endpoint. The history contains all requests and send responses for an complete endpoint.
Vombatidae supports two operations modes. You can either use .net core based in memory cache or a REDIS server to store the history and respons message per endpoint.
The needed configuration can either be done in the appsettings.json or by setting environment variables.
| name | data type | mandatory | description |
|---|---|---|---|
| UseRedis | boolea | y | indicates if Redis should be used or not |
| SlidingExpiration | int | y | The amount of seconds the data is kept in the cache. (Resets every time the end point is used.) |
| Host | string | n | The host of the Redis server, must only be set if UseRedis is true |
| Instance | string | n | The instance that is used in the Redis, must only be set if UseRedis is true |
| Origins | string [] | n | If you want to use a frontend application that runs on a different URL you must configure them here |
Json:
"Cache": {
"UseRedis": false,
"SlidingExpiration": 48200,
"Host":"localhost",
"Instance":"Foo"
},
"Cors": {
"Origins": ["https://localhost:8080", "http://example.com"]
}Environment variables:
Cache__Host=localhost;
Cache__Instance=Foo;
Cache__SlidingExpiration=48200;
Cache__UseRedis=true
Cors__Origins__0=http://example.com
Cors__Origins__1=https://localhost:8080
For Vombatidae there is also a docker container available that can be found here.
To run the container on your machine without Redis use the following command:
docker run -p 8081:80 --env Cache__UseRedis=false --env Cache__SlidingExpiration=12600 --env Cors__Origins__0=http://example.com --env Cors__Origins__1=https://localhost:8080 --name vombatidae codingwombat/vombatidae:master
To run Vombatidae with an attached Redis use docker-compose -d up with the docker-compose.yml that is located in the top level of the repo.
To use Vombatidae as a mock server you need the following endpoints:
-
To create a new endpoint (burrow) send a
GETrequest to/Vombatidae/Burrow. The response will contain aGuidthat will be used in all following URLs. -
To save a response send a
PUTrequest to/Vombatidae/Feed/{{guid}}and attach?method={{RESTVerb). TheGuiddefines what endpoint should be used andRESTverbdefines for what requests the response should be used. Allowed values are:GET,POST,PUT,DELETE. Behind theguidyou can attach as many routing steps as you like so/Vombatidae/Feed/{{guid}}would be different to/Vombatidae/Feed/{{guid}}/but also/Vombatidae/Feed/{{guid}}/foo/bar/bazis possible. The response itself will be send inside the body in the following format:{ "StatusCode": 200, "ResponseMessage": { "String": "this is a test string", "int": 123456789, "bool": true, "datetime":"2020-07-21T11:22:47.834561Z" } }StatusCodeis the http response code used for the response.ResponseMessageis a wrapper for the response message it can contain any JSON you want. You can query the prepared message by sending a get request to the same endpoint. -
The endpoint that will produce your stored response is reachable via
/Vombatidae/{{guid}}plus the route you added. -
To query the history send a
GETrequest to/Vombatidae/history/{{guid}}.
You can find example requests under dev.codingWombat.Vombatidae/Scripts/Vombatidae.http the can either be used in Rider or with removed variables in VSCode with the REST Client extension.