A simple service proxy layer with downstream mocking capabilities inbuilt
Assumption you have docker installed, these command are tested and verified for Docker engine 20.10.5
- Build Docker image "moxy"
docker build --no-cache -t moxy:latest .
- Run the moxy service, by default it listens on port 8080
docker run -dit -p 8080:8080 --name moxy moxy
- Confirm its running
docker logs -f moxy
if all good it should show the following log lines
{"level":"info","msg":"Server Started, listening on port 8080",......}
Assuming moxy is up and running, listening on port 8080, sample flows showing how to register a google search api as a mock
Step 1 - Register a service - Lets name this as Google and version at 1.0
The simple payload for registering a Service
Endpoint:
Method: POST
Type: RAW
URL: http://localhost:8080/v1/service/register
Body:
{
"name":"google",
"version":"1.0"
}
Step 2 - Registering an API with a service, here we will use already registered service Google 1.0, as per Step 1 above, we would get the ServiceID in response to service registration and we will use that as follows to register an API against that service
POST /v1/service/{serviceID}/api/register and provide the API level details in the payload
Endpoint:
Method: POST
Type: RAW
URL: http://localhost:8080/v1/service/google.1.0/api/register
Body:
{
"api_url":"/customsearch/v1?key=INSERT_YOUR_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lecturesnewtestasd4",
"method":"GET",
"request_payload":{"me":"Hecky","doby":1978},
"response_code":200,
"response_payload":{"msg":"Greetings Hecky who was born on 1978"}
}
This API lists all the services registered with Moxy
Endpoint:
Method: GET
Type: RAW
URL: http://localhost:8080/v1/service
This lists all the APIs registered under a registered service
GET /v1/service/{serviceID}/api
Endpoint:
Method: GET
Type: RAW
URL: http://localhost:8080/v1/service/google.1.0/api
Last Step - Execute a registered mock API
In the step above we registered a dummy google search api with Signature
GET /google.1.0/{apiURL}
The request has to exactly the same to find a match and return the registered mock
- Verb / HTTP method should be same
- API url including the service ID should match - following the pattern of /{serviceID}/{apiURL}
- Request Payload should be same
Endpoint:
Method: GET
Type: RAW
URL: http://localhost:8080/google.1.0/customsearch/v1
Query params:
Key | Value | Description |
---|---|---|
key | INSERT_YOUR_API_KEY | |
cx | 017576662512468239146:omuauf_lfve | |
q | lecturesnewtestasd4 |
Body:
{
"doby": 1978,
"me": "Hecky"
}