ApiAxle
A free, locally hosted API management solution. A proxy for your api, statistics for your api & a powerful api of its own.
There are three components which make up the Api Axle system:
The proxy
$ npm install apiaxle-proxy
This is the aspect of the system which does the actual proxying. It sits in front of your API and does the authentication, key checking, queries per day/second checking. This is the bit you want if you want anything. More detail on the main site.
The API
$ npm install apiaxle-api
This is the (optional) API for managing users, keys and endpoints. Once installed, run it with:
$ apiaxle-api
The REPL
$ npm install apiaxle-repl
A way to administer your ApiAxle installation via a command line. Once installed, run it with:
$ apiaxle
You then get a prompt where you can type help
to find out more.
The base libs
This is a set of libraries which is required for the above components.
Installation
Check the main site for more detailed installation instructions.
Build
Docker
Docker image
This repository is auto-built and published as apiaxle/apiaxle.
NOTE: If using this via Docker Compose, use the version 2 syntax for your docker-compose.yml file.
Dockerfiles
This project uses two Dockerfile
s, one for production usage named Dockerfile
,
and a second for development of ApiAxle itself, named Dockerfile-development
.
Docker Compose is configured to build the development version for you, see
below for examples.
Environment Variables
Environment variables can be used to configure NODE_ENV
, REDIS_HOST
,
REDIS_PORT
, API_NAME_REGEX
and DEBUG_MODE
. Below are defaults for production:
NODE_ENV
=production
REDIS_HOST
=redis
REDIS_PORT
=6379
API_NAME_REGEX
=^(.+?)\\.api\\.
(extra backslash required for JSON)DEBUG_MODE
=false
Start services
docker-compose up -d redis
docker-compose up -d api
docker-compose up -d proxy
Run repl
docker-compose run repl
Run tests
docker-compose run repl test
Enter container
docker-compose run --entrypoint sh repl
Example adding an api and key:
api acme create endPoint='localhost:8000'
key 1234 create
api acme linkkey 1234
Example curl:
curl localhost:3000?api_key=1234 -H 'Host: acme.api.localhost'