endpoint

Super simple mock HTTP API endpoints that return static JSON data, for testing webhooks and client libraries in development.
05 Mar 20181100

endpoint

Build Status Coverage Status

Super simple mock API endpoints for static JSON data

$ curl -X PUT http://endpoint.example.com/api/endpoint/add -d '{"name": "my-endpoint", "data": {"hello": "world"}}'
{
  "success": true,
  "name": "my-endpoint",
  "data": {
    "hello": "world"
  },
  "statusCode": 200,
  "delay": 0
}

$ curl http://endpoint.example.com/endpoint/my-endpoint
{
  "hello": "world"
}

Screencast

Screencast

Overview

endpoint is a self-hosted microservice for quickly creating configurable mock HTTP endpoints that return static JSON data. It's intended to be a super simple, zero-configuration, zero-server-overhead way of associating some JSON with a URL in order to test webhooks or client libraries during development.

endpoint is especially useful for testing client-side logic when a live production server is either not yet ready or unavailable in a development environment.

Endpoint JSON data is persistently stored on-disk and cached in-memory, completely eliminating the need for any database configuration.

Features

  • Associate arbitrary JSON data with any endpoint name
  • Specify a custom HTTP response status code
  • Specify a custom response delay (e.g. for testing behavior under slow network conditions)

Installation

Locally

$ npm install
$ npm run build
$ npm run start
# A local instance is now available at http://localhost:16540

Production (Apache reverse proxy, with pm2):

First, in the shell:

$ cd /path/to/endpoint
$ npm install
$ NODE_ENV=production npm run build
$ pm2 start index.js

A minimal Apache config:

<VirtualHost *:80>
    Alias "/static" "/path/to/endpoint/src/client/static"

    ProxyPass "/static" !

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:16540/
    ProxyPassReverse / http://127.0.0.1:16540/
</VirtualHost>

If your production infrastructure makes use of Sentry, you may optionally run the build and start scripts with the environment variables SERVER_SENTRY_DSN and CLIENT_SENTRY_DSN defined either in the shell or saved in .env.