A simple, quick, cross-platform API mock server that returns examples specified in an API description document. Features include:
- OpenAPI 3.x support
- Load from a URL or local file
- Accept header content negotiation
- Example:
Accept: application/*
- Example:
- Prefer header to select response to test specific cases
- Example:
Prefer: status=409
- Example:
- Server name validation (enabled with
--validate-server
) - Request parameter & body validation (enabled with
--validate-request
) - Configuration via:
- Files (
/etc/apisprout/config.json|yaml
) - Environment (prefixed with
SPROUT_
, e.g.SPROUT_VALIDATE_SERVER
) - Commandline flags
- Files (
Usage is simple:
# Load from a local file
apisprout my-api.yaml
# Load from a URL
apisprout https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/api-with-examples.yaml
A hosted API Sprout Docker image is provided that makes it easy to deploy mock servers or run locally. For example:
docker pull danielgtaylor/apisprout
docker run -p 8000:8000 danielgtaylor/apisprout http://example.com/my-api.yaml
Configuration can be passed via environment variables, e.g. setting SPROUT_VALIDATE_REQUEST=1
, or by passing commandline flags. It is also possible to use a local API description file via Docker Volumes:
docker run -p 8000:8000 -v localfile.yaml:/api.yaml danielgtaylor/apisprout /api.yaml
Download the appropriate binary from the releases page.
Alternatively, you can use go get
:
go get github.com/danielgtaylor/apisprout
Contributions are very welcome. Please open a tracking issue or pull request and we can work to get things merged in.
The following describes the steps to make a new release of API Sprout.
- Merge open PRs you want to release.
- Select a new semver version number (major/minor/patch depending on changes).
- Update
CHANGELOG.md
to describe changes. - Create a commit for the release.
- Tag the commit with
git tag -a -m 'Tagging x.y.z release' vx.y.z
. - Build release binaries with
./release.sh
. - Push the commit and tags.
- Upload the release binaries.
Copyright © 2018 Daniel G. Taylor